【ROS-nanorobot】教程跟踪

2 base_control功能包使用及作用

1、使用Xshell无线连接到nanocar
2、运行指令

roslaunch base_control base_control.launch

3、新开一个会话,连接上nanocar,如果 PC 上的系统中没有安装 teleop_twist_keyboard 功能包则需要手
动安装 sudo apt-get install ros-kinetic-teleop-twist-keyboard
4、然后启动键盘控制功能包

rosrun teleop_twist_keyboard teleop_twist_keyboard.py 

可以得到:
前进 i
后退 ,
静止k
左前拐 u
同理右前拐,左后拐,右后拐,j和l无反应
q/z 增加/降低速度(包括线速度和角速度)
w/x 增加/降低线速度
e/c 增加/降低角速度

注意,在调整速度的时候,默认会执行最后一次的方向,所以在调整速度的时候可以按下k后在调整,且必须在该终端下。
5、用手机控制,在Master URI下

http://192.168.31.75:11311

然后点击连接即可控制,需在同一个wifi下

4、ROS话题列表查看及话题订阅

在完成3的前提下,查看当前哪些话题在使用

rostopic list

如果想查看话题的信息:

rostopic echo /话题名字
eg:
rostopic echo /battery 

5、ubuntu虚拟机的使用及ROS分布式通讯介绍

1、首先使用Xshell启动base_control.launch文件
2、然后确定虚拟机网络是桥接模式
3、修改虚拟机中的配置文件

sudo vim /etc/hosts

要加上一句

192.168.31.75   matser_ip
# 也就是机器人的ip
# 因为使用的不是提供的虚拟机,所以我们在这里修改了为了防止影响其他的使用,一般在使用完之后会修改回来

4、修改.bashrc 文件
打开

vim ~/.bashrc

在文件末尾
加上

#nanocar ROS多机通讯的配置
export ROS_IP=`hostname -I | awk '{print $1}'`
export ROS_HOSTNAME=`hostname -I | awk '{print $1}'`
export ROS_MASTER_URI=http://master_ip:11311
source ~/nanorobot/devel/setup.bash

5、这里我使用的是自己搭建的环境,所以还需要修改nanocar的配置,如果不是自己的环境就不需要修改,修改的话是:
在机器人下:

vim ~/.bashrc

然后,将里面的

export ROS_IP=`hostname -I | awk '{print $1}'`
export ROS_HOSTNAME=`hostname -I | awk '{print $1}'`
export ROS_MASTER_URI=http://master_ip:11311

三行中的最后一行修改为:

export ROS_MASTER_URI=http://`hostname -I | awk '{print $1}'`:11311

至此,分布式通讯配置完成
如果没问题的话,在Xshell运行base_cotrol情况下,在PC终端可以查看rostopic话题
PC下

rostopic list

如果有打印出话题列表则设置正常,如果输出“ERROR: Unable to
communicate with master!”则设置有问题,请检查设置

6、ubuntu下ssh远程登陆和免密登录设置

1、远程登录:前提是完成第5节中的配置

ssh nanorobot@192.168.31.75

2、免密登录
退出机器人端

exit

然后在PC端

ssh-keygen

一路回车过去
然后输入:

ssh-copy-id -i .ssh/id_rsa.pub nanorobot@192.168.31.75
# 后面为自己的机器人的id

输入密码,会出现:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'nanorobot@192.168.31.75'"
and check to make sure that only the key(s) you wanted were added.

可惜我没成功,不知道为啥,不过这不重要,不影响之后的实验。

7、启动机器人摄像头并查看图像

1、首先在虚拟机登陆进机器人
两种方法都行,第一种方法要进行第5节

ssh nanorobot@master_ip
ssh nanorobot@192.168.31.75

2、在nanorobot下执行:
启动摄像头

roslaunch robot_vision robot_camera.launch 

3、在PC端检查一下话题

rostopic list 

结果是:

/camera_info
/image_raw
/image_raw/compressed
/image_raw/compressed/parameter_descriptions
/image_raw/compressed/parameter_updates
/image_raw/compressedDepth
/image_raw/compressedDepth/parameter_descriptions
/image_raw/compressedDepth/parameter_updates
/image_raw/theora
/image_raw/theora/parameter_descriptions
/image_raw/theora/parameter_updates
/rosout
/rosout_agg

4、查看图像

rqt_image_view

如果没有安装rqt,执行下面四句代码即可:

sudo apt-get install ros-kinetic-rqt -y
sudo apt-get install ros-kinetic-rqt-multiplot -y
sudo apt-get install libqwt-dev -y
sudo rm -rf ~/.config/ros.org/rqt_gui.ini

8、人脸检测demo演示

1、 在机器人端启动摄像头

roslaunch robot_vision robot_camera.launch

2、在机器人端启动人脸识别,但是在电脑上启动也是可以,因为ros分布式通讯,这个节点与硬件无关,所以可以

roslaunch robot_vision face_detector.launch

3、在PC端启动rqt

rqt_image_view

4、选择消息类型为:

/cv_bridge_image

10、机器人激光SLAM建图demo演示

1、在机器人端
启动激光SLAM的laucnh文件:

roslaunch robot_navigation robot_slam_laser.launch

2、启动PC端图形环境:

roslaunch robot_navigation slam_rviz.launch

3、启动键盘控制的节点,PC端:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

4、在机器人端保存地图

roscd robot_navigation/maps   //直接跳转到功能包下
rosrun map_server map_saver -f map

地图保存完成,为导航做好准备

11、机器人导航动态避障demo演示

1、前提是已经完成第10讲,并保存了地图
2、Demo 中默认使用 maps 文件夹下的 map 文件,如果需要使用其他文件,请修改 robot_navigation.launch 文件中的文件名或者路径:

<arg name="map_file" default="$(find robot_navigation)/maps/map.yaml"/>

3、由于我的小车是四轮 小车,不适合阿克曼结构存在最小转向半径,不可原地转向,所以通过planner传入参数制定TEB规划器

roslaunch robot_navigation robot_navigation.launch planner:=teb

4、在PC端打开rviz

roslaunch robot_navigation navigation_rviz.launch

12、机器人Stage仿真的使用

这个用不到,也应该教程即可

13、机器人仿真建图与导航

同12

14、机器人多点巡航

1、启动机器人的导航应用,机器人端:

roslaunch robot_navigation robot_navigation.launch planner:=teb


2、在PC端打开rviz界面

roslaunch robot_navigation navigation_rviz.launch 

3、定位
4、这里要使用laucnh文件,可以先去其目录下看一下

roscd robot_navigation/launch/
ls
vim way_point.launch

结果为:

<launch>
    <!-- For Simulation -->
    <arg name="sim_mode" default="false" />
    <param name="/use_sim_time" value="$(arg sim_mode)"/>
    <arg name="loopTimes"       default="0" />
    <!-- move base -->
    <node pkg="robot_navigation" type="way_point.py" respawn="false" name="way_point" output="screen">
        <!-- params for move_base -->
        <param name="goalListX" value="[1.0, 1.0, 0.5, 0.5]" />
        <param name="goalListY" value="[0.0, 0.5, 0.5, 0.0]" />
        <param name="goalListZ" value="[0.707, 1.0, -0.707, 0.0]" />
        <param name="loopTimes" value="$(arg loopTimes)"/>
        <param name="map_frame" value="map" />
    </node>


</launch>

5、确定目标点
在PC端执行:
订阅话题

rostopic echo /move_base_simple/goal 

然后让小车去目标点,使用rviz里的2D Nav goal

然后记录下来订阅话题的消息的position里的x、y和orientation里的z,这三个值是我们关心的,精确到小数点后两位就可以了

这里我选择了三个点:

simple/goal 
header: 
  seq: 0
  stamp: 
    secs: 1617244345
    nsecs: 381119024
  frame_id: "map"
pose: 
  position: 
    x: 2.47713708878
    y: -0.0375968813896
    z: 0.0
  orientation: 
    x: 0.0
    y: 0.0
    z: -0.194478361895
    w: 0.980906808395
---
header: 
  seq: 1
  stamp: 
    secs: 1617244360
    nsecs: 542564238
  frame_id: "map"
pose: 
  position: 
    x: 2.4008102417
    y: 0.458069682121
    z: 0.0
  orientation: 
    x: 0.0
    y: 0.0
    z: 0.997299830726
    w: -0.07343737219
---
header: 
  seq: 2
  stamp: 
    secs: 1617244372
    nsecs:  70168956
  frame_id: "map"
pose: 
  position: 
    x: 0.0802084356546
    y: 0.016568094492
    z: 0.0
  orientation: 
    x: 0.0
    y: 0.0
    z: 0.999992663691
    w: -0.00383047826046
---

则在机器人端修改成:

<launch>
    <!-- For Simulation -->
    <arg name="sim_mode" default="false" />
    <param name="/use_sim_time" value="$(arg sim_mode)"/>
    <arg name="loopTimes"       default="0" />
    <!-- move base -->
    <node pkg="robot_navigation" type="way_point.py" respawn="false" name="way_point" output="screen">
        <!-- params for move_base -->
        <param name="goalListX" value="[2.48, 2.40, 0.08]" />
        <param name="goalListY" value="[-0.03, 0.46, 0.02]" />
        <param name="goalListZ" value="[-0.19, 1.00, 1.00]" />
        <param name="loopTimes" value="$(arg loopTimes)"/>
        <param name="map_frame" value="map" />
    </node>


</launch>

6、在机器人端启动多点巡航:

roslaunch robot_navigation way_point.launch 
# 此为无限循环
roslaunch robot_navigation way_point.launch loopTimes:=2
# 此为循环两次

这里我们 loopTimes 参数为巡航次数,设置为 2 则机器人在巡航点
来回巡航两遍后停止,如果设置为 0 则一直巡航。

机器人在巡航中每到达一个巡航点会输出下一巡航点的目标 ID,巡
航次数到达后会输出 Loop: 2 Times Finshed 信息,到这里巡航功能
就介绍完了。
为了避免混乱,我们来梳理一下,通过 rviz 发布目标点,输出 goal
话题,修改 launch 文件,只是为了正确的设置巡航点坐标,并不是
每次都要执行的操作,在以后执行巡航只需要 3 个步骤
第一, 启动机器人导航的 launch 应用
第二, 指定机器人在地图中真实位置
第三, 启动巡航的 launch

15、感言

此主要为自己做笔记,如有问题,留言一起讨论呀,解决问题点个赞支持下呀!!!

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
首先,确保你已经安装了Ubuntu 22.04操作系统。然后,按照以下步骤安装ROS Noetic: 1. 添加ROS Noetic软件仓库 打开终端,运行以下命令: ``` sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-noetic.list' ``` 2. 添加ROS公钥 运行以下命令: ``` curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add - ``` 3. 更新软件包列表 运行以下命令: ``` sudo apt update ``` 4. 安装ROS Noetic 运行以下命令: ``` sudo apt install ros-noetic-desktop-full ``` 此命令将安装ROS Noetic的完整版本,包括可视化工具和仿真环境。 5. 初始化rosdep 运行以下命令: ``` sudo rosdep init rosdep update ``` 6. 设置ROS环境变量 运行以下命令: ``` echo "source /opt/ros/noetic/setup.bash" >> ~/.bashrc source ~/.bashrc ``` 7. 安装ROS工具 运行以下命令: ``` sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential ``` 完成上述步骤后,ROS Noetic已经安装在Ubuntu 22.04中。你可以通过运行以下命令测试安装: ``` roscore ``` 如果一切正常,你应该能够看到ROS Master节点启动并输出以下消息: ``` ... logging to /home/your_user_name/.ros/log/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/roslaunch-ubuntu-xxxxx.log started roslaunch server http://xxx.xxx.xxx.xxx:xxxxx/ ros_comm version x.x.x SUMMARY ======== PARAMETERS * /rosdistro: noetic * /rosversion: x.x.x NODES auto-starting new master process[master]: started with pid [xxxx] ROS_MASTER_URI=http://xxx.xxx.xxx.xxx:xxxxx/ setting /run_id to xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx process[rosout-1]: started with pid [xxxx] started core service [/rosout] ``` 现在你已经成功安装了ROS Noetic!
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值