ROS自主导航机器人
文章平均质量分 69
PIBOT
这个作者很懒,什么都没留下…
展开
-
49.在ROS中实现local planner(2)- 实现Purepersuit(纯跟踪)算法
实现了一个模板,接下来我们将实现一个简单的纯跟踪控制,也就是沿着固定的路径运动,全局规划已经规划出路径点,基于该路径输出相应的控制速度。原创 2023-03-05 19:33:04 · 3572 阅读 · 3 评论 -
48.在ROS中实现local planner(1)- 实现一个可以用的模板
本文简单实现了一个的插件,显然实际没啥用,不过可以作为一个模板,基于该模板实现自己的算法。后面我们将基于该模板实现可用的局部规划控制。本文代码见。原创 2023-02-17 23:48:15 · 1295 阅读 · 0 评论 -
PIBOT移植ROS2记录(4)-odom与tf
1. odom topic修改头文件#include <nav_msgs/Odometry.h>—> #include <nav_msgs/msg/odometry.hpp>修改定义ros::Publisher---->rclcpp::Publisher<nav_msgs::msg::Odometry>::SharedPtrnav_msgs::Odometry---->nav_msgs::msg::Odometry 创建pub对象adve原创 2022-05-04 21:09:47 · 617 阅读 · 0 评论 -
PIBOT移植ROS2记录(3)-新增launch文件
1. 新增launch文件参考https://gitee.com/pibot/ros2_tutorials/blob/master/src/cpp_parameters/launch/cpp_parameters_launch.py不同于ROS1的xml格式的launch文件,ROS2的launch文件直接是一个python文件对照ROS1的launch<node name="pibot_driver" pkg="pibot_bringup" type="pibot_driver" outpu原创 2022-05-04 20:25:21 · 641 阅读 · 0 评论 -
PIBOT移植ROS2记录(2)-添加Node与cmd_vel
前文添加了简单的测试保证编译通过,本文将开始移植实现一个控制下发1. base_driver的移植首先把base_driver.cpp添加到pibot_driver中编译diff --git a/CMakeLists.txt b/CMakeLists.txtindex c1a7568..ea8fa95 100644--- a/CMakeLists.txt+++ b/CMakeLists.txt@@ -10,6 +10,7 @@ find_package(ament_cmake REQUIR原创 2022-05-04 01:25:02 · 1119 阅读 · 0 评论 -
PIBOT移植ROS2记录(7)-launch的参数
launch的参数前文实现的launch较简单,对比ROS1的launch确实了参数传入的功能<launch> <arg name="baudrate" default="$(env PIBOT_DRIVER_BAUDRATE)" doc="pibot driver baudrate"/> <arg name="publish_odom_tf" default="true" doc="pub tf"/> <arg name="use_原创 2022-05-07 23:16:19 · 488 阅读 · 0 评论 -
PIBOT移植ROS2记录(1)-环境搭建
pibot_bringup提供了ROS1的交互的node以及相关工具,我们通过移植pibot_bringup至ROS2,学习相关的ROS2开发1. 环境搭建前文RO2的安装与简单测试跑了一个简单的demo,具体环境搭建不再赘述2. 创建包我们创建ROS2的包,再拷贝之前的代码,一步步修复编译异常mkdir -p ~/pibot_ros/ros_ws/srcros2 pkg create --build-type ament_cmake pibot_bringup --dependencies r原创 2022-05-03 23:36:41 · 476 阅读 · 0 评论 -
PIBOT移植ROS2记录(9)-键盘与遥控手柄控制
1. 键盘控制同ROS1一样我们只需要安装相应的包后就可以使用teleop_twist_keyboard包发出cmd_vel topic控制我们的机器人小车1.1 安装sudo apt-get install ros-galactic-teleop-twist-keyboard1.2 运行测试➜ ros2 launch pibot_bringup bringup_launch.py➜ ros2 run teleop_twist_keyboard teleop_twist_keyboar原创 2022-05-09 00:38:19 · 1688 阅读 · 1 评论 -
PIBOT移植ROS2记录(6)-imu的移植
1. imu的移植同之前的类似我们,新增sensor_msg的头文件#include <sensor_msgs/msg/imu.hpp>#iinclude <sensor_msgs/msg/magnetic_field.hpp>修改定义imu和mag的pub定义以及msg定义ros::Publisher ----> rclcpp::Publisher<sensor_msgs::msg::Imu>::SharedPtrros::Publish原创 2022-05-06 23:09:49 · 951 阅读 · 0 评论 -
PIBOT移植ROS2记录(8)-launch文件的三种格式
1. launch文件格式我们知道ROS1个launch文件是xml格式的,ROS2在前面的文章中我们都是使用python格式实现的,事实上ROS2也是支持xml格式的,而且ROS2还支持yaml格式,参考官方文档分别做了实现1.1 python格式直接可以参考之前的实现bringup_launch.py1.2 xml格式实现:bringup_launch.xml对比ROS1 XML格式和ROS2 XML格式,可以看到有些许的不同点我们直接实现后对比2个文件的差别(左边为ROS1的launch原创 2022-05-07 23:48:54 · 485 阅读 · 0 评论 -
PIBOT移植ROS2记录(5)-参数及动态设置
1. pid参数调节的topic1.1 移植pid的输入输出作为topic分别输出,这个只需要创建一个int类型的pub即可void BaseDriver::init_pid_debug() { if (config_.out_pid_debug_enable) { const char* input_topic_name[MAX_MOTOR_COUNT] = {"motor1_input", "motor2_input", "motor3_input", "motor4_input"};原创 2022-05-04 22:10:19 · 1279 阅读 · 1 评论 -
47.在ROS中实现global planner(3)- 使用A*实现全局规划
可以看出来已经生效了,规划路径也出来了, 很不幸的是一直无法正常运行,显然这个路径规划的太贴近障碍物。导致规划的结果无法在实际机器人场景使用, 后续我们看看如何做优化。原创 2023-02-16 21:18:22 · 1882 阅读 · 4 评论 -
46.在ROS中实现global planner(2)- A*规划算法预研
Astar算法是一种图形搜索算法,常用于寻路。Astar算法原理网上可以找到很多,简单的说就是,从起点开始,向外发散,再去其中每个点到终端的估计距离最短的,继续循环上次步骤,直到到达目标点。原创 2023-02-15 22:17:00 · 1232 阅读 · 0 评论 -
45.在ROS中实现global planner(1)- 实现一个可以用的模板
本文简单实现了一个的插件,显然实际没啥用,不过可以作为一个模板,基于该模板实现自己的算法。后面我们将基于该模板实现可用的全局规划。本文代码见。原创 2023-02-11 21:46:56 · 2153 阅读 · 0 评论 -
RO2的安装与简单测试
ROS2已经出了好几个版本,本文尝试安装最新的版本并跑通一个简单的测试安装ROS2我们直接按照官方的文档使用安装包安装(我们修改了使用国内的源加快安装速度)# http://wiki.ros.org/ROS/Installation/UbuntuMirrorssudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu/ focal main" > /etc/apt/sources.list.d/ros-lates原创 2022-04-29 09:22:04 · 1615 阅读 · 0 评论 -
44.在PIBOT中适配雷达
0. 前言PIBOT已经支持多种雷达的支持,但新的产品不断出现,如何在PIBOT包中适配新的雷达1. 雷达配置与运行配置当前的雷达在pibot_lidar包中定义, pibot_lidar/launch可以看到不同雷达的支持, 配置选择雷达只需要执行pibot_init_env.sh脚本在提示配置雷达时选择对应的雷达please specify your pibot lidar: (0: not config,原创 2022-04-28 16:14:45 · 350 阅读 · 0 评论 -
43.使用docker创建pibot ros环境
1. docker安装docker 安装可以参考官方链接按照提示一步一步操作可对于ubuntu# 删除旧版本 sudo apt-get remove docker docker-engine docker.io containerd runcsudo apt-get updatesudo apt-get install ca-certificates curl gnupg lsb-releasecurl -fsSL https://download.docker.com/linux/ubuntu原创 2022-04-28 16:12:17 · 988 阅读 · 0 评论 -
42.电机与编码器的方向动态配置
1. 概述21.关于运动控制方向的补充基于之前的版本,通过修改程序中的宏来确定方向。新的固件新增了配置参数支持动态调整编码器和电机的方向,同时提供了相关的控制协议和测试程序,方便移植自己的电机和编码器测试脚本pypibot的代码参见这里2. 电机顺序的确认PIBOT规定各个模型电机顺序如下 , 以下坐标系同ROS(X为前进方向,Y为右)2.1 电机顺序两轮差分/* x ^ | | |y<-----原创 2022-04-28 16:11:32 · 812 阅读 · 0 评论 -
39.ROS程序开机自启动(2)
1.前言前文33.ROS程序开机自启动(1)使用了ROS的 robot_upstart包设置了pibot_bringup开启启动的方法,在统一用到其他的launch上会发现无法启动的问题,比如在启动gmapping时候,没有相关环境变量等,本文介绍使用systemd设置启动项2.使用systemctrl创建服务2.1新建服务在/etc/systemd/system创建pibot.service# pibot.serive[Unit]Description=this is pibot servi原创 2022-04-28 15:46:14 · 1008 阅读 · 0 评论 -
38.laser_filters的使用(3)-屏蔽指定角度
前文34.laser_filters的使用(2)讲述使用laser_filters中的LaserScanBoxFilter插件屏蔽车体干扰,本文讲述使用LaserScanAngularBoundsFilter插件屏蔽指定角度的数据模拟数据使用30.laser_filters的使用中的例子模拟得到一个下面看下如何使用该包angular_bounds_filter_example.launch<launch><node pkg="laser_filters" type="scan原创 2022-04-28 15:42:39 · 481 阅读 · 0 评论 -
12.激光雷达简介
概述机器人导航中,激光雷达、摄像机、声纳、红外线、碰撞开关等传感器就如同人的器官一样,激光雷达常用的一种。激光雷达激光雷达通常会有一部分“盲区”。使用激光雷达返回的数据通常可以描绘出一幅极坐标图,极点位于雷达扫描中心,0-360°整周圆由扫描区域及盲区组成。在扫描区域中激光雷达在每个角度分辨率对应位置解析出的距离值会被依次连接起来,这样,通过极坐标表示就能非常直观地看到周围物体的轮原创 2018-01-24 13:12:08 · 2982 阅读 · 0 评论 -
在树莓派4上编译运行orbslam2,使用RGBD相机在ROS中测试
前文在树莓派4上编译运行orbslam2, 现在我们在ROS中使用RGBD相机测试下1. 环境硬件环境PIBOT-APOLLOXtion 3D SENSOR软件环境:UBUNTU 18.04ROS MELODIC2. 编译2.1 配置rosdepsudo vi /etc/hosts#在文件末尾添加151.101.84.133 raw.githubusercontent.comsudo apt-get install python-rosdepsudo rosdep init原创 2020-10-27 12:00:30 · 795 阅读 · 0 评论 -
在树莓派4上编译运行orbslam2
1. 环境硬件环境:树莓派4B 4G 32G sandisk tf card软件环境:Linux pibot 5.4.0-1022-raspi #25~18.04.1-Ubuntu SMP PREEMPT Thu Oct 15 14:38:18 UTC 2020 aarch64 aarch64 aarch64 GNU/Linuxpibot@pibot:~$ pkg-config --modversion opencv3.2.0pibot@pibot:~$ pkg-config --modv原创 2020-10-27 11:58:07 · 1038 阅读 · 2 评论 -
PIBOT上位机开发
文章目录1. 概述2. 软件框架3. Ubuntu的刷入、ROS的安装4. ssh远程连接4.1 安装xshell通过`Xshell`连接`树莓派/RK3288/RK3399``Windows`通过`xshell`传输文件5. 用户主机6. 多机通讯7. ROS驱动开发7.1 概述7.2 驱动开发及PID参数动态调整7.3 目录结构简介7.4 编译与测试配置`树莓派/RK3288/RK3399`控...原创 2019-06-02 23:31:22 · 1147 阅读 · 0 评论 -
33.ROS程序开机自启动
1.概述写了这么多ROS的launch脚本,怎么才能开机就启动呢,本文介绍1种方法,使用ROS的 robot_upstart包,下面以pibot_bringuppackage的·bringup.launch`演示2.robot_upstart包2.1 安装使用pibot_install_ros.sh一键安装工具即可安装所有pibot所需要的ROS包,如需单独安装sudo apt-get i...原创 2019-04-12 10:12:45 · 834 阅读 · 0 评论 -
32.PIBOT通讯协议的python解析实现
前文ROS机器人底盘(3)-通讯协议定义了PIBOT的通讯协议,该协议较为简单且不与ROS相关同时可以扩展,本文使用python实现一个收发,可以同时使用在windows或者linux1. dataHolderpython的struct包可以用来打包和解包字节流,针对协议我们定义一个dataHolder包用于打包所有的协议,下面直接上代码import struct# main board...原创 2019-04-12 10:12:15 · 616 阅读 · 0 评论 -
2. ROS的多机通讯的配置
配置准备为了方便我们观察配置结果,我们在树莓派和PC端安装turtlesim测试包sudo apt-get install ros-kinetic-turtlesim分别在树莓派和PC上输入下面指令,即可各自控制roscorerosrun turtlesim turtlesim_noderosrun turtlesim turtle_teleop_key想在PC上直接按键控制树莓派上的乌龟运动,原创 2017-12-11 13:04:53 · 3321 阅读 · 0 评论 -
PIBOT下位机开发
文章目录1. 概述2. 软件框架3. 下位机开发环境3.1 环境搭建ArduinoSTM32F1STM32F43.2 环境配置ArduinoSTM32F1STM32F44. 代码分析5. 参数配置5.1 默认参数apollozeusapolloXhadeshera5.2 配置参数6. 电机方向和编码器方向软件调整1. 概述PIBOT下位机支持多种主板,Arduino Mega2560、STM...原创 2019-06-02 23:32:14 · 1468 阅读 · 1 评论 -
PIBOT常见问题Q&A
文章目录1. ROS代码编译问题2. 权限问题3. 参数问题4. 雷达启动不转,health state 异常5. timeout6. 编译缺少包1. ROS代码编译问题如果从windows拷贝的源码编译可能遇到以下问题No such file or directory这是生成动态参数时因为windows和Linux下换行不一致导致的,使用Visual Code打开pibot\cfg\Ca...原创 2019-06-02 23:32:59 · 653 阅读 · 0 评论 -
34.laser_filters的使用(2)
前面ROS机器人底盘(30)-laser_filters的使用(1)讲了如何使用laser_filters,本文在hades上试下如何使用laser_filters屏蔽车身的摄像头支架1.车体支架干扰首先启动建图pibot_gmapping虚拟机启动RVIZpibot_view可以看到受到摄像头支架干扰,雷达在车体上检测到障碍,这会直接干扰到建图和导航2.屏蔽支架干扰2.1添...原创 2019-06-02 23:49:57 · 1614 阅读 · 0 评论 -
35.pibot_init_env介绍
1.多机通讯因车载主机限制(没有屏幕或者性能有限),无法启动Rviz查看建图等信息,ROS多机的通讯配置一文讲了具体的原理细节,即配置一个主机和一个从机,把从机的ROS_MASTER_URI指向主机即可,一般我把车载的主机配置指定为主机,而用于显示的PC或者虚拟机配置为从机。PIBOT提供了一键配置的脚本,按照提示选择即可PIBOT使用手册可以看到对于车载的主机machice type为...原创 2019-06-02 23:50:33 · 539 阅读 · 0 评论 -
36.USB摄像头使用
USB摄像头PIBOT机器人小车可以接入 USB摄像头作为监控摄像头,可以实时传输视频流查看 USB摄像头节点ls /dev/video* -al修改节点名称roscd pibot/launch/vi usb_camera.launch启动 USB摄像头roslaunch pibot usb_camera.launch查看视频流电脑端(多机通讯)rosr...原创 2019-06-02 23:51:04 · 662 阅读 · 0 评论 -
37.使用探索模式实现指定区域建图
1.frontier_exploration使用frontier_exploration可以实现指定区域自动探索建图2.安装sudo apt-get install ros-kinectic-frontier-exploration完成安装其他ros版本请安装对应的包,也可以使用pibot_install_ros.sh脚本可以一键完成安装3.启动frontier_exploratio...原创 2019-06-02 23:51:37 · 1935 阅读 · 3 评论 -
31.一种简单的基于激光雷达的跟随
本文利用ros_simple_follower在pibot小车上实现简单的基于激光雷达的跟随ros_simple_follower简介直接上源码ros_simple_followerA very simple implementation for ROS to make a mobile robot follow a target. Either using a Laser Range Fi...原创 2019-04-12 10:11:38 · 3327 阅读 · 3 评论 -
30.laser_filters的使用
1.雷达数据屏蔽需求使用激光雷达建图和导航,实际应用中,不可能保证雷达在最上层(即车体不会遮挡雷达),一般应用为雷达放在下面,对于360°的雷达,车体就会遮挡从而导致车体被人作为障碍物,那如何解决这个问题2.简单实现我们只需要订阅激光雷达的数据,把相应角度的数据屏蔽即可,然后在重新发布新的数据#!/usr/bin/env pythonfrom __future__ import pri...原创 2019-04-12 10:10:03 · 2492 阅读 · 0 评论 -
PIBOT介绍
目录1. 概述1.1PIBOTZeus和Apollo是PIBOT工作室专门针对ROS开发的移动三轮全向小车和差分两轮小车主要应用ROS机器人教学机器人创客开发服务机器人研发AGV研发应用场景室内平坦地面外观图淘宝链接Apollo Zeus相关资料链接:https://pan.baidu.com/s/1kEN...原创 2017-12-20 15:32:25 · 4099 阅读 · 0 评论 -
15.move_base介绍(3)
继续前文14.move_base介绍(2)配置了一个无需地图的move_base应用,本文将介绍下costmap概述 move_base构造函数中会构造local_cost_map和global_costmap两个对象,同时构造他们时会根据参数添加相应的层 这些参数分别在costmap_common_params_apollo.yamllocal_costmap_para原创 2018-01-25 16:27:00 · 770 阅读 · 0 评论 -
17.move_base介绍(5)
15.move_base介绍(3)介绍的local_costmap和global_costmap的参数 漏了其中的plugin参数inflation先看下官方的图 - 红色为机器人轮廓 - 内部蓝色圆即为内切圆 - 外部蓝色圆即为外切圆每个网格的值从0~255 - Lethal(254): 网格与机器人中心重合, 肯定导致冲突 - Inscribed(253): 网原创 2018-01-25 16:28:42 · 597 阅读 · 0 评论 -
16.move_base介绍(4)
global_plannerGlobalPlanner: # Also see: http://wiki.ros.org/global_planner old_navfn_behavior: false # Exactly mirror behavior of navfn, use原创 2018-01-25 16:27:54 · 829 阅读 · 0 评论 -
14.move_base介绍(2)
配置导航参数前文(13.move_base介绍(1))讲了move_base的简单的基础,本文将详细分析下如何配置move_base参数最简单的配置再次引用该图 map_server和amcl都是不必须的,我们就首先配置一个没有map的move_basefake_move_base_with_out_map.launch include file="$(find原创 2018-01-24 13:14:13 · 1126 阅读 · 0 评论