第一章 ROS基础
ROS系列学习:
总章目录:
第一章 ROS基础
第二章 ModelArts数据处理
第三章 ModelArts模型训练
第四章 ModelArts模型转换
第五章 HiLens模型管理
第六章 HiLens技能部署
第七章 Hilens红绿灯数据获取+socket通信
第八章 Hilens红绿灯数据获取+socket通信(二)
ROS基础部分
前言
创建工作空间以及功能包;
话题;
服务;
分布式通信;
提示:以下是本篇文章正文内容,下面案例可供参考
一、创建工作空间
mkdir -p ~/catkin_ws/src
catkin_init_workspace
source devel/setup.bash
catkin_create_pkg <package_name> [depend1] [depend2] ...
二、ROS通信
话题:advertise / subscribe
服务:advertiseService / serviceClient
动作:Server / Client / waitForServer / sendGoal
三、分布式通信
ROS是一种分布式软件框架,节点之间通过松耦合的方式进行组合。
分布式可以用于rviz远程控制显示,时候需要配置多机通讯:
1、IP地址设置,保证底层链路是通的:
1.0 IP对应表
本地IP:192.168.5.45 ubuntu
机器人IP:192.168.5.71 artrobot-TM1701
1.1 配置hosts
首先查看本机IP(后续我们称为从机IP,因为我们将用我们本地的机器去控制移动的机器人):
远程连接并查看另外一台设备IP(后续我们成为主机,就是我们实际运行的机器人所在设别的 IP):
ssh artrobot-TM1701@192.168.5.71
ifconfig
ubuntu@ubuntu:~$ sudo vim /etc/hosts
————————————————————————————
#加入到 hosts中:
192.168.5.71 artrobot
————————————————————————————
ubuntu@ubuntu:~$ ping artrobot
截图:
在从机中加入主机 IP 以及名称:
从机 ping 主机查看是否连通:
编辑从机 hosts 文件:
artrobot@artrobot-TM1701:~$ sudo vim /etc/hosts
加入ubuntu用户IP:主机中加入从机IP(截图中写错了)
主机 ping 从机查看是否连通:
此时hosts配置完成。
1.2 在从机设置ROS_MASTER_URI,使从机可以找到ROS Master;
我们需要 从机 知道 主机 运行在什么地方:
所以我们需要在从机中加入主机的 Master 节点:
假如:我们通过本地控制机器人,同时在机器人端启动了ros master :此时我们需要在本地配置环境变量为:
export ROS_IP= ubuntu #从机 IP 地址
export ROS_MASTER_URI=http://artrobot:11311 #主机 IP 地址
11311 是ros master的一个端口号,固定的。
方法一:(当前终端有效的)
写脚本:
ros_master_uri.sh
#!/bin/bash
#for open rviz and set ROS master ip
#Chance
function get_ip_address { ifconfig | fgrep -v 127.0.0.1 | fgrep 'Mask:255.255.255.0' | egrep -o 'addr:[^ ]*' | fgrep '.8.'| sed 's/^.*://'; }
#export ROS_IP=$(get_ip_address)
#export ROS_IP = 192.168.5.10
export ROS_IP=ubuntu #从机 IP 地址
export ROS_MASTER_URI=http://artrobot:11311 #主机 IP 地址
#source ../devel/setup.bash
#rosrun rviz rviz
执行一下:
source ros_master_uri.sh
方法二:(所有终端生效)
echo "export ROS_MASTER_URI=http://ubuntu:11311" >> ~/.bashrc
1.3 主从机案例:(主从机是相对的要好好理解)
1、主机:启动 ros master 和小乌龟节点:
ubuntu@ubuntu:~$ roscore
ubuntu@ubuntu:~$ rosrun turtlesim turtlesim_node
2、从机查看rostopic list 以及发布速度指令:
artrobot@artrobot-TM1701:~$ rostopic list
artrobot@artrobot-TM1701:~$ export ROS_MASTER_URI=http://ubuntu:11311
此时就可以发布速度指令:
artrobot@artrobot-TM1701:~$ rostopic pub -r 10 /turtle1/cmd_vel geometry_msgs/ist "linear:
x: 0.5
y: 0.0
z: 0.0
angular:
x: 0.0
y: 0.0
z: 0.5"