关于虚拟机、或者用户自己的 ubuntu 系统 ROS 键盘控制、SLAM、导航功能异常解决方法
1.虚拟机端(或者非小车主控端的 ubuntu)打开一个终端
hosname -I 大写 i)出来的,跟我这样只有 IP 地址的 , 直接忽略以下步骤)好好看指导视频 网络配置及移动控制。

ROSNOTE : ros小车点滴


2.hosname -I 出来的 IP 地址后面 一堆数字和字母的。继续往下看步骤 3

ROSNOTE : ros小车点滴
3.打开虚拟机端(或者非小车主控端的 ubuntu)的~/.bashrc 文件。
vim ~/.bashrc 进入编辑模式,不会编辑的百度 linux 下如何编辑文本
翻到最底部,把这两行:

ROSNOTE : ros小车点滴
改成红色框框的两行:

ROSNOTE : ros小车点滴

直接 cope,以下代码复制粘贴。
export ROS_IP=`hostname -I | awk '{print $1}'`
export ROS_HOSTNAME=`hostname -I | awk '{print $1}'`


以上操作,请确保小车主控和虚拟机(虚拟机桥接模式),或者自己的 ubuntu 连接在同一网段的同一个局域网(非校园网、大公司局域网)内进行,并且操作正确。

 

ROSNOTE : ros小车点滴

 

 

 

 

Ubuntu ip :172.18.109.199

小车: 172.18.109.166

 

 

 

 

 

 

 

校准ium

 

  1. ubunutu连接ros小车

ssh [email protected]车IP地址

退出使用: exit

另一种方法(但是小车的ip地址会变化):打开sudo gedit /etc/hosts 将机器人IP地址和名字输入到其中,打开终端连接 ssh [email protected](刚刚输入的名字)

Imu校准

  1. (小车)roslaunch xrrobot bringup.launch

Bringup是连接驱动的程序

 

在ubuntu下的终端中输入:gedit ~/.bashrc

修改IP地址 Export ros_master_uri=自己小车的IP地址

source ~/.bashrc

 

两个窗口,不同的主人

在ubuntu中输入:rostopic list(查看主题)

 

在ros中启动roscd xrrobot/param/imu/

查看imu数据:rostopic echo /imu/data(imu斜杠之前是要有空格的)

Ctr+c 退出

 

需要先启动:bringup

校准imu: rosrun imu_calib do_calib

从x+开始校准

校准结束后要按ctrl+c 结束掉bringup,然后再开启

 

 

 

校准角速度步骤:

 

注意一个问题:ros_master的url地址的问题,注意如果小车的IP地址如果换了那要

修改IP地址 Export ros_master_uri=自己小车的IP地址

 

 

连接上ros小车系统:ssh [email protected]车的IP地址

启动前:在ros小车系统中进入roscd xrrobot/launch

vim bringup.launch

找到角速度(线速度也要改),将参数value修改为1,一定要基于1来校准

 

  1. 在小车ros系统下启动bringup: roslaunch xrrobot bringup.launch

  2. 在小车ros系统下输入: rosrun xrrobot_nav calibrate_angular.py

  3. 在ubuntu下运行:rosrun rqt_reconfigure rqt_reconfigure

在打开的rqt工具中,调节odom_angular_scale_correction后边的数值

ROSNOTE : ros小车点滴

得到小车转一圈的数值之后,ctrl+c结束bringup的工作,

此时是这样的

ROSNOTE : ros小车点滴

在这个目录下输入:vim bringup.launch 修改角速度angular_scale的value值

Esc推出,:wq保存,那之后就是按照这个角速度来运行了

PS:

网站地址:

http://www.xiao-r.com/index.php/Study/catalog/cid/38www.dh960.com/?00809

 

 

 

 

 

 

 

 

 

 

 

校准线速度(运动直线校准)

  1. 连接上ros小车系统:ssh [email protected]车的IP地址

  2. 在ros小车系统中进入: roscd xrrobot/launch

vim bringup.launch

将linear-scale的数值修改为1

  1. 在机器人小车系统上启动bringup.launch: roslaunch xrrobot bringup.launch

  2. 在机器人小车系统上:rosrun xrrobot_nav calibrate_linear.py

  3. 在ubuntu下运行:rosrun rqt_reconfigure rqt_reconfigure

 

视屏传输

  1. 连接ros小车

  2. 在小车ros下:roslaunch xrrobot camera.launch

  3. 在ubuntu上: rosrun rqt_image_view rqt_image_view

  4. 在ubuntu上:rosrun rviz rviz

  5. 接下来就打开了rviz,点击add添加一个image的窗口,然后点击imageTopic添加话题,显示画面。

键盘建立图像

  1. 连接小车

  2. 运行launch文件:roslaunch xrrobot bringup.launch

  3. 在新的终端上重新连接小车启动雷达文件(小车ros上):

roslaunch xrrobot lidar_slam.launch

  1. Ubuntu上:rosrun rviz rviz

  2. 设置rviz中的东西:file->找到代码中的slam.rviz文件运行

即显示出地图

  1. 在新的终端中(ubuntu)运行键盘控制脚本:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py

Ps:安装了teleop_twist_keyboard

 

 

巡线

 

  1. 连接小车:ssh [email protected]

  2. 小车上启动bringup文件: roslaunch xrrobot bringup.launch

  3. 小车上启动照相机:roslaunch xrrobot camera.launch

  4. 在ubuntu的工作空间catkin_ws上:roslaunch riki_line_follower riki_line.launch

  5. 成功

  6. 注意:

  1. 高速过弯为什么不会甩出去?六轴陀螺仪与三轴磁力机,互补滤波与PID

  2. 视觉是以FPGA为平台吗?stm32+fpga

  3. 激光雷达也可以巡线 什么重建

  4. 摄像头加opencv

  5. 树莓派的处理速度有这么快?摄像头的分辨率要多低帧数要多高?

树莓派5ms一次处理,stm32+fpga输出兆hz的频率给电机

  1. 用了什么算法吗?当时问过学长用一个忘记叫啥的算法补偿了惯性后好了一点,但是还是做不到这样的速度?互补滤波,你也可以用卡尔曼

  2. 基于opencv的图像处理,hsv算法

  3. 陀螺仪,滤波与pid没调好

  4. 运动控制采用的stm32加fpga,互补滤波陀螺仪加pid,巡线用的是图像处理,基于opencv

巡线资料

  1. https://blog.csdn.net/ZHANG781068447/article/details/83713438

 

ROSNOTE : ros小车点滴 ssh连接小车,启动控制底盘的launch,然后再启动camera.launch,然后再启动机器人的节点---roslaunch riki_line_follower riki_line.launch

这个camera.launch自己分析一下,

Checking log directory for disk usage. This may take awhile.

Press Ctrl-C to interrupt

Done checking log file disk usage. Usage is <1GB.

started roslaunch server http://172.18.109.229:45717/

SUMMARY

========

PARAMETERS

* /rosdistro: kinetic

* /rosversion: 1.12.14

 

NODES

/

Velocity (riki_line_follower/navig)

detection (riki_line_follower/detect)

 

ROS_MASTER_URI=http://192.168.1.102:11311

 

ERROR: cannot launch node of type [riki_line_follower/detect]: can't locate node [detect] in package [riki_line_follower]

ERROR: cannot launch node of type [riki_line_follower/navig]: can't locate node [navig] in package [riki_line_follower]

 

 

No processes to monitor

shutting down processing monitor...

... shutting down processing monitor complete

 

 

 

linedetect.hpp思路

 

如果重心在图像中心的左侧减去公差,则向左转
 如果重心在图像中心的右侧加上公差,则向右转
 如果重心在图像中心附近,请直走

 

关于巡线遇到的问题以及学习到知识

  1. 导入其他人写的功能包之后,输入命令roslaunch filename-pkg filename.launch

出现这个文件夹不是file的name,原因可能是没有编译这包

  1. 关于编译包:

    1. 可以只编译一个包,所以就不会出现那种编译整个空间一堆错误的情况

单独编译一个包的命令:

catkin_make -DCATKIN_WHITELIST_PACKAGES="需要单独编译的包名"

取消单独编译:第一步设置了编译参数CATKIN_WHITELIST_PACKAGES,可能导 致接下来其他的编译工作紊乱,需要重新调整该参数:

catkin_make -DCATKIN_WHITELIST_PACKAGES=""

  1. 编译全部:进入catkin_ws 中catkin_make

  1. 当一个编译空间中搞不出来的时候,去新建一个编译空间试一试

<!--

 

<rosparam file="$(find rbx1_nav)/config/myfake/dwa_local_planner_params.yaml" command="load" />

<rosparam file="$(find rbx1_nav)/config/myfake/move_base_params.yaml" command="load" />

<rosparam file="$(find rbx1_nav)/config/myfake/global_planner_params.yaml" command="load" />

-->

创建工作空间:

mkdir -p ~/catkin_ws/src

cd ~/catkin_ws/src

catkin_init_workspace

cd ~/catkin_ws

catkin_make

大概的思路:

  1. 在include中初始定义了类LINEDETECT,RIKIROBOT

  2. 在src中具体定义类中的函数,同时调用完成功能

  3. Detect.cpp :订阅图像信息,将ros图像信息转化为opencv数据格式的进行处理,先调用高斯滤波处理函数,然后再调用方向函数,最终将方向发布。

 

当下载某个功能包到自己的空间,在编译时,出现依赖项有问题,解决如下:

$roscd package_name

$rosdep package_name

rosdep即可安装缺少的依赖项

 

  1.  

安装cv_bridge

 

ROS知识(12)----cv_bridge依赖opencv版本的问题

cv_bridge默认依赖的oencv版本是2.4.8,如果安装了新的opencv版本,比如2.4.11,那么在编译cv_bridge时候会提示无法找到opencv 2.4.8.so的库。

 

为解决这个问题,必须要先把旧版本的cv_bridge卸载掉:

 

sudo apt-get remove ros-indigo-cv-bridge

 

然后下载新版本的cv_bridge:

 

git clone https://github.com/ros-perception/vision_opencv.git

 

将里面的cv_bridge包拿出来,放到工作空间中,重新编译:

 

catkin_make --pkg cv_bridge

机器人基本结构:

  1. 在xrrobot中的urdf中的rikirobot.urdf文件描述的是机器人的身体组成

  2. Param(参数)-》ekf(

 

 

 

将ros环境修改为本地连接:

###为了使用本地连接把下面的注释掉了,如果要是使用远程连接的话放开注释内容

source ~/ros_ws/catkin_ws/devel/setup.bash

#export ROS_IP=`hostname -I | awk '{print $1}'`

#export ROS_HOSTNAME=`hostname -I | awk '{print $1}'`

#export ROS_MASTER_URI=http://192.168.1.101:11311

#为了ros环境将下面的给注释掉了

# added by Anaconda3 4.2.0 installer

#export PATH="/home/tree/anaconda3/bin:$PATH"

 

#export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}

#export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

#export CUDA_HOME=$CUDA_HOME:/usr/local/cuda8.0

#export PYTHONPATH="/home/tree/anaconda3/envs/tf-gpu/lib/python3.5/site-packages:$PYTHONPATH"

 

#下边的三行是为了本地连接写的

export ROS_MASTER_URI=http://localhost:11311

export ROS_HOSTNAME=localhost

运行rviz

打开一个linux终端,输入:

roscore

再打开一个linux终端(一直不明白为什么要打开两个终端或者多个终端,难道在一个终端内不可以?试了下,一个终端确实不可以,但不懂为什么),输入:

rosrun rviz rviz

 

相关文章: