ROS机器人的日常使用命令整合
首先说明,以下使用的rikirobot这个名字要换成你使用的代码包名,因为我用的是rikirobot的源码,所以调用的是rikirobot的代码包,不过目前市面上大部分的机器人小车都是千篇一律,所以换个名字大概率都适用。里面的(TAB)的意思是名字太长我懒得打了,直接敲TAB键补全吧
网络及环境配置
1.登录蒲公英VPN,输入与工控机相同的帐号密码
2.前往蒲公英的控制台,检查上位机和工控机是否连上VPN以及查看他们的IP是否有变动:点此进入控制台
3.输入hostname,查看上位机的名字
4.检查上位机的bashrc,如果发现ip变化需要更改
ROS_IP是在蒲公英查到的上位机的ip
ROS_HOSTNAME是你的上位机的名字.local
ROS_MASTER_URI是蒲公英查到的工控机的ip
sudo gedit ~/.bashrc #在这里面改
# ROS_IP=XXX.XXX.XXX.XXX
#ROS_HOSTNAME='你电脑的hostname.local'
#ROS_MASTER_URI=http://xxx.xxx.xxx.xxx:11311
4.检查工控机的bashrc以及hosts,同理ip变化也需要修改若出现拒绝,可能是服务没开或者名字重复
(1)启动SSH服务:https://blog.csdn.net/zhe_csdn/article/details/90053018
(2)跳过SSH检测:
sudo vim ~/.ssh/config
#按i进入编辑模式
#输入以下内容:
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
#之后用vim命令保存即可(先按ESC退出编辑模式,再输入':wq!')
之后拿上位机使用ssh远程连接工控机(自此之后就可以远程操作了)
ssh [email protected] #xxx为工控机的名字(最左边那个),后填工控机的ip地址
sudo vim /etc/hosts
#找到一排空白行,输入
XXX.XXX.XXX XXX.local #前为上位机ip地址,后为上位机的名字,之后保存并退出
#修改完进入bashrc文件里改
sudo vim ~/.bashrc
#也是找这几个参数,把蒲公英里拿到的工控机ip更换并输入进去)
# ROS_IP=xxx.xxx.xxx
# ROS_HOSTNAME=xxx.xxx.xxx
# ROS_MASTER_URI=http://xxx.xxx.xxx:11311
# RIKIBASE=xx xx是机器人的类别(用履带就输入tank,用四驱就输入4wd
# RIKILIDAR=rplidar
#改完之后也是保存并退出
source ~/.bashrc #最后source一遍
自此,网络方面就配置完成了
检查机器人的状态
1.这里我设置过开机是自启动bringup.launch的,开机自动打开一个终端并运行程序的教程地址如下:
使用其中的方案二,我写的脚本在主目录下的Linux开头的文件夹。
检查一下是否有打开先
rostopic list
如果显示了一定数量的话题,说明已经启动成功,可以使用以下功能了。
如果没有的话,运行如下代码
roslaunch rikirobot bringup.launch
打开失败的话要检查线路或者电源问题
功能1:手动控制机器人的移动
以下代码是在工控机内完成的(需要ssh)
rosrun teleop_twist_keyboard teleop_twist_keyboard.py
之后就可以根据指示手动操控机器人的移动了,需要改按键的话也可以直接修改这个源码
(改完记得重新catkin_make编译一遍)
功能2:IMU,角速度线速度的自动校准
1.调整IMU
#以下代码是在工控机内完成的(需要ssh)
roscd rikirobot/param/imu
sudo vim imu_calib.yaml #查看数据
rostopic echo /imu/data #刷新数据
rosrun imu_calib do_calib #开始自动调整,名字错的话可能我打少了字母,记得使用TAB补全
2.调整线速度角速度
#以下代码是在工控机内完成的(需要ssh)
rosrun rikirobot_nav calibrate_angular.py #打开角速度调整模式
rosrun rikirobot_nav calibrate_linear.py #打开线速度调整模式(二选一,分开来调整)
#以下代码是在上位机内完成的(不需要ssh)
rqt_reconfigure
#以下代码是在工控机内完成的(需要ssh)
roscd rikirobot/launch
sudo vim bringup.launch #在bringup文件夹里修改其初始的线速度角速度,修改完记得':wq!'保存退出
功能3:SLAM地图构建
1.使用gmapping算法构建地图
#以下代码是在工控机内完成的(需要ssh)
roslaunch rikirobot lidar_slam.launch
#以下代码是在上位机内完成的(不需要ssh)
rviz #1.在RVIZ左上的file-Openconfig-找到slam.rviz
#2.使用2D Nav Goal功能(设定目标位置,发送地址来加载地图),也可以使用功能1来手动控制建图
#以下代码是在工控机内完成的(需要ssh)
#保存地图
rosrun map_server map_saver -f house #house可以是任意名字,不过默认后续默认调用的地图就是house
roscd rikirobot/maps
ls -l #查询是否保存
2.选择一片区域自动构建地图(也是gmapping算法)
#以下代码是在工控机内完成的(需要ssh)
roslaunch rikirobot auto_slam.launch
#以下代码是在上位机内完成的(不需要ssh)
rviz #1.在RVIZ左上的file-Openconfig-找到auto_slam.rviz
#2.使用Publish Point功能(依次选择几个点连成封闭区域,再按点开始构建)
#以下代码是在工控机内完成的(需要ssh)
#保存地图
rosrun map_server map_saver -f house #house可以是任意名字,不过默认后续默认调用的地图就是house
roscd rikirobot/maps
ls -l #查询是否保存
3.用hector算法构建地图
#注意:线速度要0.2以下、角速度0.2以下,不要来回走动,该算法适合在空旷地方下使用
#以下代码是在工控机内完成的(需要ssh)
roslaunch rikirobot hector_slam.launch
#以下代码是在上位机内完成的(不需要ssh)
rviz #1.在RVIZ左上的file-Openconfig-找到slam.rviz
#2.使用2D Nav Goal功能(设定目标位置,发送地址来加载地图),也可以使用功能1(需要ssh)来手动控制建图
#以下代码是在工控机内完成的(需要ssh)
#保存地图
rosrun map_server map_saver -f house #house可以是任意名字,不过默认后续默认调用的地图就是house
roscd rikirobot/maps
ls -l #查询是否保存
4.用karto算法构建地图
#以下代码是在工控机内完成的(需要ssh)
roslaunch rikirobot karto_slam.launch
#以下代码是在上位机内完成的(不需要ssh)
rviz #1.在RVIZ左上的file-Openconfig-找到slam.rviz
#2.使用2D Nav Goal功能(设定目标位置,发送地址来加载地图),也可以使用功能1(需要ssh)来手动控制建图
#以下代码是在工控机内完成的(需要ssh)
#保存地图
rosrun map_server map_saver -f house #house可以是任意名字,不过默认后续默认调用的地图就是house
roscd rikirobot/maps
ls -l #查询是否保存
功能4:自动导航功能
1.定点导航(单点)
#以下代码是在工控机内完成的(需要ssh)
roslaunch rikirobot navigate.launch
#以下代码是在上位机内完成的(不需要ssh)
rviz #1.在RVIZ左上的file-Openconfig-找到navigate.rviz
#2.使用2D Pose Est功能(初始机器人在地图上的位置,雷达与墙面越贴合越好)
#3.使用2D Nav Goal功能(设定目标位置,发送地址来直接导航)
2.多点导航(规划路线)
#以下代码是在工控机内完成的(需要ssh)
roslaunch rikirobot navigate_multi.launch
#以下代码是在上位机内完成的(不需要ssh)
rviz #1.在RVIZ左上的file-Openconfig-找到multi_goals.rviz
#2.使用Publish Point功能(依次选择几个点,机器人会按照顺序朝着这些点移动)
#有时候可能打不开show_mark.py文件而报错,需要单独运行或者再chmod 777 -R catkin_ws
功能5:调试PID参数
#以下代码是在工控机内完成的(需要ssh)
rosrun riki_pid pid_configure
#以下代码是在上位机内完成的(不需要ssh)
rosrun rqt_reconfigure rqt_reconfigure #调整参数
rikirobot_project/riki_pid/cfg/rikiPID.cfg #修改PID的默认启动值
#从网上搜PID调试方法,慢慢调出合适值
功能6:摄像头寻红线,雷达跟随
1.摄像头寻红线(打开usb摄像头)
#以下代码是在工控机内完成的(需要ssh)
roslaunch camera.launch
#打开之后可以RVIZ读节点或者使用rqt_image_view读/image/raw节点来获取图像(启动rqt工具栏时不用ssh)
roslaunch riki_line_follower riki_line.launch #摄像头越低越好
2.雷达跟随(不实用)
#以下代码是在工控机内完成的(需要ssh)
roslaunch riki_lidar_follower laser_follower.launch
#原理是雷达检测最近的目标,并固定与其的距离(误差很大)
功能7:使用手机APP控制(安装Map Nav和Make a Map)
#以下代码是在工控机内完成的(需要ssh)
roslaunch rikirobot appcamera.launch
#打开APP之后连接完就直接使用了
#用app导航的话启动跟功能3、4一样的包就行了
功能8:OpenCv图像处理模板
#以下代码是在上位机内完成的[添加链接描述](https://www.bilibili.com/video/av50377985/?p=6)(不需要ssh)
roslaunch opencv_apps edge_(TAB) #边缘提取
roslaunch opencv_apps hough_lines.launch #直线识别
roslaunch opencv_apps find_cont(TAB) #结构特征轮廓识别
roslaunch opencv_apps convex(TAB) #凸起识别
roslaunch opencv_apps general(TAB) #椭圆识别
roslaunch opencv_apps people_det(TAB) #身高特征识别等等。。。。具体可以直接百度出想要的功能
#用的版本是2.7,可以用来参考别人图像识别是怎么做的
后记:实用功能链接
Linux方面的:
1.Linux开机执行指令: 自启动
2.Linux改用户名: 改用户名
3.串口数据的读取: 读串口数据
4.开机不需要密码: 自动登录
5.SSH免密码登录: 免密码视频教程
6. ROBOWARE STUDIO的安装 安装IDE
7. 以ROOT用户自动运行程序 开机执行指令(ROOT版)
8. 用ROOT权限打开文件管理器:sudo nautilus
ROS方面的:
1.rosbag数据记录及转换图片、视频:ROSBAG用法