Ros

ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。ROS遵守BSD开源许可协议。

adjust_global_plan之窄道判断

ancientcc发表了文章 0 人赞同 0 评论 2024-02-27 21:18:21

栅格角(goal_th)。以机器人中心坐标(src)和栅格坐标生成一条直线,该直线在world坐标系的角度。栅格夹角(ang_diff)。机器人偏航角和栅格角之间角度,旋转方向是偏航角到栅格角。计算窄区足迹只须考虑机器人宽度,不涉及长度。其长度固......查看全部

Gemini(奥比中光深度相机)

ancientcc发表了文章 0 人赞同 0 评论 2023-11-27 14:23:27

在mOBContext.close()前,必须确保此次得到的mDevice都被close()过。mDevice.close()会在两处,如果正处在orbbecCreateContext(),由orbbecCreateContext负责close(......查看全部

后期地图处理:建墙

ancientcc发表了文章 0 人赞同 0 评论 2023-11-12 14:50:07

建墙只需处理分隔两个房间或走廊的,没必要处理外墙。墙必须真实存在。锚点,或叫固定点,是在旋转或拉伸时,位置保持不变的点。在旋转时,它是旋转中心。 建图时,因为算法缺陷,以及不会走遍房屋,一些本该是墙的地方没生成出来。为避免在导航阶段,机......查看全部

跟随式导航(讨论)

ancientcc发表了文章 0 人赞同 0 评论 2023-10-21 20:22:15

本文内容未实现,写了些代码后,认为若没有深度摄像头,到头也可能只是实验室产品。代码中有叫ros::use_follow的变量,和它相关代码,本意是希望实现“跟着前方的二维码走”,可才写几段就不继续了。正常运行时,必须把use_follow置为fa......查看全部

tf2:setRPY、doTransform、getRPY

ancientcc发表了文章 0 人赞同 0 评论 2023-08-22 09:41:27

欧拉角可以分为绕定轴(外旋方式)和绕动轴(内旋方式)的变换方式。按定轴转动时,矩阵依次左乘。绕动轴转动时,矩阵依次右乘。一般来说,Ros解决问题是绕定轴。那如何区分某个函数是按定轴还是动轴?——函数名没有给出Euler时,定轴;名字中有Euler......查看全部

N10(镭神雷达)

ancientcc发表了文章 0 人赞同 0 评论 2023-08-18 10:58:41

目前只支持N10(lidar_name=N10)。其它型号代码有保留,但没实物测过。为安全,一开始有验证lidar_name参数必须填“N10”。按rose_ros对雷达驱动要求,一定发布sensor_msgs::LaserScan类型话题(pu......查看全部

操作机械臂

ancientcc发表了文章 0 人赞同 0 评论 2023-06-10 20:27:26

RP(Reference Point):参考点。存在爪子上的一个点,由机械臂提供商在图像中识别出来。y分量必须在机械臂中线上。PRP(Pitch Reference Point):俯仰角参考点。位置上,x、z是PRP_joint关节原点......查看全部

绑架估计(Kidnapping estimate)

ancientcc发表了文章 0 人赞同 0 评论 2023-06-03 11:08:26

分数三个来源。1)未知栅格。2)点云覆盖的栅格。3)中间点覆盖的栅格。为什么在绑架估计过程中,要阻止move_base进入恢复性操作?——设想么个场景:makePlan失败,kidnap正在position_full2,若不阻止进入恢复情操作,那......查看全部

几种导航场景(过时)

ancientcc发表了文章 0 人赞同 0 评论 2023-02-06 21:13:29

本文中的路径/道路指DWAPlannerROS中的global_plan,即经过a_star_search后生成的路径。对道路,rose_ros分为四种路况,变量path_case_ 指示了当前是哪种路况。path_only_backward&n......查看全部

硬件规范

ancientcc发表了文章 0 人赞同 0 评论 2023-02-05 08:59:34

一、硬件构成硬件至少要有一块主板、一个SLAM传感器、一个包含驱动板的底盘。对主板,目前选用Firefly的ROC-RK3588S-PC。对SLAM传感器,要用于辅助解决机器人绑架,必须用激光雷达,不能深度摄像头。确定可用的激光雷达:思岚RPLI......查看全部

base_local_planner::transformGlobalPlan

ancientcc发表了文章 0 人赞同 0 评论 2023-02-04 11:45:00

transformGlobalPlan功能是根据本地代价地图,从全局路径global_plan截取一段,并将路径点从/map坐标系转换到/odom坐标系,生成结果放在参数transformed_plan。图1 一次transformGlobalP......查看全部

绑架估计:修改cartographer

ancientcc发表了文章 0 人赞同 0 评论 2023-01-28 20:19:29

 一、把kidnap_pose2d做为cartographer的初始位姿如何把kidnap_pose2d应用到cartographer?想到两种方法。当前会有个cartographer_node节点正在运行,告诉这个node,把kidn......查看全部

足迹(footprint)

ancientcc发表了文章 0 人赞同 0 评论 2023-01-05 14:23:43

足迹表示机器人的轮廓,只能是一个多边形,或一个圆形。不论哪种形态,都用std::vector<geometry_msgs::Point>进行存储,对每个Point,z分量都是0。文中把这些Point称为顶点。对多边形,顶点数目是多边形......查看全部

rose_slice之修改ros导航

ancientcc发表了文章 0 人赞同 0 评论 2022-12-27 20:38:37

GlobalPlanner/plan。makePlan规划出的全局路径。DWAPlannerROS/global_plan。有时写成global_plan。从makePlan截取出的一段落在本地代价地图内路径,并经过adjust_global_p......查看全部

param参数

ancientcc发表了文章 0 人赞同 0 评论 2022-12-25 16:11:05

(double)/move_group/global_costmap[local_costmap]/obstacle_layer/scan/raytrace_range(ObservationBuffer::raytrace_range_):在障......查看全部

adjust_global_plan之a_star_search

ancientcc发表了文章 0 人赞同 0 评论 2022-12-23 10:41:04

makePlan使用的是静态地图+实时障碍层,这个静态地图会和此时地图有所不同,像同一坐标值出现偏差。换句话说,makePlan中的LETHAL_OBSTACLE栅格,在此时地图可能变成INSCRIBED_INFLATED_OBSTACLE。在r......查看全部

ObstacleCostFunction、OscillationCostFunction

ancientcc发表了文章 0 人赞同 0 评论 2022-12-16 11:16:03

一、ObstacleCostFunction涉及到的配置变量max_trans_vel___default__.max_vel_trans = 0.55max_scaling_factor___default__.max_sc......查看全部

恢复性操作(recovery_behaviors_)

ancientcc发表了文章 0 人赞同 0 评论 2022-12-13 21:04:59

navigation功能包提供了三种恢复性操作:ClearCostmapRecovery、RotateRecovery和MoveSlowAndClear。 一、trose_recoverytrose_recovery是rose_ros新......查看全部

move_base节点

ancientcc发表了文章 0 人赞同 0 评论 2022-12-12 20:13:52

出错时,恢复性操作是从0开始,还是从上一次执行后的recovery_index_开始?遵循这么条规则:如果执行恢复性操作后,能够把之前导致出错的原因解决掉,下次就从0开始,否则从上一次执行后的recovery_index_开始。 一、状......查看全部

geometry_msgs::Twist

ancientcc发表了文章 0 人赞同 0 评论 2022-12-07 20:02:35

Ros用Twist封装速度数据。机器人驱动底血腥时,会发布“/cmd_vel”话题,该话题对应的消息类型就是Twist。C:\Windows\System32>rosmsg show geometry_msgs/Twis......查看全部

全局规划:global_planner

ancientcc发表了文章 0 人赞同 0 评论 2022-12-06 15:41:52

文中“A*算法”、“grid_path算法”注释转自“移动机器人导航技术笔记(1)-global_planner学习”。网上文章在说如何优化,像“ROS:一种简单的基于global_planner的全局路径优化方法”。成本。在不断遍历栅格时,把两......查看全部

rose_slice之DataptrLayer

ancientcc发表了文章 0 人赞同 0 评论 2022-11-30 15:37:51

一、自主探索建图自主探索建图顶层逻辑找到个最佳导航点goal。认为导航到goal,能最好探索地图。move_base操作机器人导航到goal。如果认为地图建得差不多了,结束建图,否则回到步骤1。建图增加了两个问题。一是如何找到到最佳导航点goal......查看全部

nav_msgs::OccupancyGrid

ancientcc发表了文章 0 人赞同 0 评论 2022-11-26 21:04:50

Ros用OccupancyGrid存储栅格地图,栅格图表示了障碍物在真实地图上的分布情况。C:\Windows\System32>rosmsg show nav_msgs/OccupancyGrid std_msgs/H......查看全部

Costmap2D、LayeredCostmap

ancientcc发表了文章 0 人赞同 0 评论 2022-11-25 14:38:02

index/size量。它们都是一个整数。index量:在计算矩形行/列时,它表示的行、列都是有效的,最大值是长度减1,或高度减1。size量:表示尺寸,像矩形长度、高度。生成代价地图 --->  寻找最佳路径......查看全部

使用rivz

ancientcc发表了文章 0 人赞同 0 评论 2022-11-23 20:03:53

只有Windows上的Rose-Ros才支持rivz。 一、下载官方Ros(版本:noetic)有了Rose-Ros源码后,Ros已经能工作,但为使用rviz,以及更多第三方Ros node,还是要安装个官方Ros。Rose-......查看全部

导航+摄像头(测距)+机械臂执行逻辑

ancientcc发表了文章 0 人赞同 0 评论 2022-07-25 14:34:57

示例目标:用户在小程序单击navigation_goal_按钮后,把机器人导航到目标物“moveit”,并操作机械臂夹起目标物。图1 导航+摄像头(测距)+机械臂1、(小程序)navigation_goal_:set_did_navig......查看全部

moveit_msgs::RobotTrajectory

ancientcc发表了文章 0 人赞同 0 评论 2022-05-30 15:50:05

DOF(Degree Of Freedom)。自由度。Ros用moveit_msgs::RobotTrajectory封装发向机器人的路径控制,对当中每个路点,表示它的有关节状态(positions)、相对于起始路点的时间戳(......查看全部

urdf中的<link>、<joint>

ancientcc发表了文章 0 人赞同 0 评论 2022-05-14 20:28:05

关节状态State物理意义;对旋转关节,即urdf中type=continuous或revolute,关节状态是旋转轴的旋转角度。举个例子,值1.57,表示此个关节绕旋转轴旋转90度,至于是顺时间还是逆时针,要看axis的正、负号以及开发者如何定......查看全部

日志api、ROSOutAppender和rosout节点

ancientcc发表了文章 0 人赞同 0 评论 2022-05-12 19:58:11

caller调用ros日志api时,像ROS_INFO_NAMED、ROS_WARN,除了会把日志输出到output,还可能会把日志发布向话题/rosout,以及存储到日志文件rosout.log。图1 ros::console::impl::p......查看全部

dynamic_reconfigure

ancientcc发表了文章 0 人赞同 0 评论 2022-05-11 21:12:17

dynamic_reconfigure机制可分为两个功能。初始化时得到各个param参数。运行时实时修改参数。rose_ros支持第一个功能,不再支持第二个。dynamic_reconfigure涉及逻辑比较繁琐,在使用上须注意,否则会造成问题。......查看全部

测试rose_ros

ancientcc发表了文章 1 人赞同 0 评论 2022-05-08 09:09:39

这里的测试代码,都是跨平台的,即windows、android一样。但为有好的调试环境,着重用windows下的visual studio。进入测试前,一定要先编译出launcher.exe。 一、Ros通信机制:topic、servi......查看全部

ubuntu 20.04安装、测试ikfast

ancientcc发表了文章 0 人赞同 0 评论 2022-04-16 15:48:56

参考运动学求解器 IKFast + UR5MoveIt!运动学插件IKFAST(八)一、安装openrave这里介绍的安装openrave适用于新安装的ubuntu 20.04。至少ubuntu要没安装过python。1.1 ......查看全部

KDL:运动学求解器

ancientcc发表了文章 0 人赞同 0 评论 2022-04-09 11:19:57

关节状态State物理意义;对旋转关节,即urdf中type=continuous或revolute,关节状态是旋转轴的旋转角度。举个例子,值1.57,表示此个关节绕旋转轴旋转90度,至于是顺时间还是逆时针,要看axis的正、负号以及开发者如何定......查看全部

规划[2/5]:位姿规划

ancientcc发表了文章 0 人赞同 0 评论 2022-04-04 21:15:00

对目标状态器中的constraint_samplers::ConstraintSampler采样器对象,在位姿规划创建的派生类是IKConstraintSampler。PositionConstraint封装了某个link上位置(xyz字段)方面......查看全部

目标状态器(ompl::base::Goal)

ancientcc发表了文章 0 人赞同 0 评论 2022-04-02 20:50:29

目标状态器是从Goal派生的类对象,派生类较多,较常见的使用类是ConstrainedGoalSampler。图1 采样、读取目标值逻辑之前关于规划文章可知,client发来的moveit_msgs::Constraints类型表示的目......查看全部

路径规划[2/4]:RRTConnect::solve

ancientcc发表了文章 0 人赞同 0 评论 2022-03-24 20:56:09

solve总逻辑。进行一轮轮迭代,在每轮迭代,1)生成一个随机结点rmotion。2)调用growTree,以rmotion为新采样点,对初始树进行扩展。3)确保rmotion结点值等于新添加到初始树的结点值。3)不断扩展目标树,直到或扩展到了r......查看全部

规划[1/5]:关节规划

ancientcc发表了文章 0 人赞同 0 评论 2022-03-21 21:10:19

ompl相关编程分为四步,依次是设置目标状态、设置起始状态、求解和读取规划结果。向ompl设置的初始状态是实时从joint_state_publiser结点收到的/joint_states。ompl规化出的路径存放在ompl::base::Pla......查看全部

server处理move action:MoveGroupMoveAction

ancientcc发表了文章 0 人赞同 0 评论 2022-03-20 19:25:23

client要操作机械臂,首先调用MoveGroupInterfaceImpl::plan(Plan& plan)为此次操作做规划,内中会发送moveit_msgs::MoveGroupGoal请求action。对应到serve......查看全部

server处理exectraj action:MoveGroupExecuteTrajectoryAction

ancientcc发表了文章 0 人赞同 0 评论 2022-03-19 20:32:04

DOF(Degrees of Freedom)。自由度。js(JointState)。关节状态。专门指存储在/joint_states话题、最后发送到机器人的sensor_msgs/JointState。client通过mov......查看全部

导航概述

ancientcc发表了文章 0 人赞同 0 评论 2022-02-27 10:24:35

首先说下导航要达到什么目标。机器人会用两种方法控制设备,一是无线,二是机械臂。无线。包括蓝牙、wifi等。如果机器人能走到距离设备小于半米,应该就可以了。至于角度,无所谓。机械臂。这时机器人须要接触设备。但是,机器人在靠近设备后和操作设备之间会有......查看全部
ROS (Robot Operating System, 机器人操作系统) 提供一系列程序库和工具以帮助软件开发者创建机器人应用软件。它提供了硬件抽象、设备驱动、库函数、可视化、消息传递和软件包管理等诸多功能。ROS遵守BSD开源许可协议。