- 博客(129)
- 资源 (1)
- 收藏
- 关注
原创 前言 -ur机械臂在ros系统下的仿真
硕士三年,深耕ros机械臂的仿真,临近毕业搭建了一套ur10e机械臂和三维点云处理的ROS仿真平台,从0到1搭建属于自己的ros机械臂仿真平台。目录一 前期准备工作和环境搭建
2023-04-20 15:50:56
402
原创 树莓派4B ubuntu16.04 +ros+melodic 镜像,已经安装好meolodic版本的ros 免费分享
树莓派4B ubuntu16.04 +ros+melodic 镜像,已经安装好meolodic版本的ros 免费分享。
2023-02-10 12:37:19
365
2
原创 5 win10 python3.6+pcl1.9环境配置
前言***note:***本文是在电脑的环境上直接进行配置,没有使用anaconda虚拟环境,还是建议在anaconda下进行配置,后续也会有在虚拟环境下进行配置的教程。1资料准备下载pcl的python库(1)GitHub下载https://gitcode.net/mirrors/strawlab/python-pcl?utm_source=csdn_github_accelerator百度网盘:链接:https://pan.baidu.com/s/1Cf_f4-DxYjk7vBLTfd3A2
2022-05-03 16:37:25
3389
原创 4 win10环境下+vs2017+pcl1.9环境配置
1.系统环境变量配置1.搜索栏搜索环境变量,点击编辑环境变量,进入下图后点击环境变量2.找到系统变量里的path,然后双击进入3.添加路径,以下图片中没有的添加进去。路径是你安装pcl时的路径这一步完成之后需要将电脑重启一下才能生效2. vs2017环境配置1.先创建一个新项目2.属性管理器中进行属性的配置(该步骤就是搭建一个自己特色的环境+以下环境是在realse+x64环境下设置的)调出属性管理器 ,在releasex64 文件右击,新建一个属性表,自己把名字取号,我的取名
2022-05-03 11:25:32
1222
原创 3.win10下,vs2017+pcl1.9的安装和配置-pcl下载
1.PCL1.9.0下载与安装1.下载github链接如下:链接: https://github.com/PointCloudLibrary/pcl/releases.下载较慢,加上百度网盘的链接:根据自己的编译器环境选择下载win64或者winX32的版本,例如博主下载的VS2017win64版本:下载PCL-1.9.0-AllInOne-msvc2017-win64.exepcl-1.9.0-pdb-msvc2017-win64.zip两个文件。2.安装右击以管理员身份运行,“PC
2022-05-03 10:59:34
966
原创 2.安装numpy
简介在进行第二部分的库安装前,首先提醒大家,所有的库可以在 anaconda 虚拟环境中进行安装,我的是直接在计算机上进行配置环境的。(后续也会有在虚拟环境安装的教程)1.NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性
2022-05-03 08:52:05
5498
原创 1 windows环境下配置pcl环境总览-win10+python3.6+vs2017+pcl1.9
环境配置总览必备软件和安装包python3.6安装必备软件和安装包python3.6安装1.搜索python官网下载python3.6 www.python.org or (推荐)百度网盘下载链接:https://pan.baidu.com/s/1X1jIg3_H8U3F0tssguLzHQ 提取码:njg12.安装流程A.右击下载好的安装包,然后以管理员身份运行,弹出如下界面这里要注意的是,将python加入到windows的环境变量中,如果忘记打勾,则需要手工加到环境变量中,手
2022-05-02 21:52:16
1073
原创 Part6.2ROS amcl 定位
1.amcl包<launch><node pkg="amcl" type="amcl" name="amcl" output="screen"> <!-- Publish scans from best pose at a max of 10 Hz --> <param name="odom_model_type" value="diff"/> <param name="odom_alpha5" value="0.1"/> &l
2021-12-06 11:46:31
408
原创 Part6.1ROS gmapping 建图实现
1.新建功能包导入依赖: amcl,gmapping,map_server,move_base2.编写gmapping节点launch文件<launch><!--仿真环境下设置为true--><param name="use_sim_time" value="true"/> <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
2021-12-06 11:35:10
660
原创 ROS多机通信时间同步 解决the NTP socket is in use, exiting 的问题
一 . 服务端进行的操作 (PC端)1.服务端 pc端 首先要安装NTP用于时间同步sudo apt-get install ntp2.对pc端的文件进行配置sudo nano /etc/ntp.conf添加代码restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap server 127.127.1.0 fudge 127.127.1.0 stratum 10注意第一行的代码,要根据客户端的ip地址来设置,在客户端的终端输入
2021-12-05 10:27:08
1437
原创 Part5.3 ros机器人仿真 gazebo篇
1.gezebo 是对小车的物理信息进行仿真因为要用到小车的碰撞参数,以及惯性矩阵,所以要先设置一个xacro头文件<!--封装了球 长方形 圆柱的惯性矩阵的算法--><robot name="base" xmlns:xacro="http://wiki.ros.org/xacro"> <!-- Macro for inertia matrix --> <xacro:macro name="sphere_inertial_matrix" par
2021-11-25 16:26:32
1276
原创 Part5.2 ros机器人仿真 XACRO篇 xacro详解
1.xacro在上文中实现了用urdf去构建小车模型,但是在小车模型构建过程中,我们发现,代码的复用性很低,不易对数据进行更改,cacro对函数以及变量进行了封装,用xacro编写的程序可读性更高,代码复用性更好。2.用xacro构建机器人模型2.1 构建底盘模型<!--创建底盘的xacro文件--><!-- 根标签--><robot name="my_base" xmlns:xacro="http://www.ros.org/wiki/xacro">
2021-11-23 16:34:56
2367
原创 Part5.1.3 ros机器人仿真 URDF篇 joint标签简介
1.本文通过在urdf进行机器人的建模建模的urdf文件如下:joint 标签是用来描述两个坐标系之间的关系的<robot name="mycar"><!--小车底盘--> <link name="base_link"> <visual> <geometry> <!--设置机器人的形状 盒型,圆柱型,球形--> <!--<box size="1 1 1"/>--> <
2021-11-23 10:19:34
780
原创 Part5.1.2 ros机器人仿真 URDF篇 link标签简介
<robot name="mycar"> <link name="base_link"> <visual> <geometry> <!--设置机器人的形状 盒型,圆柱型,球形--> <!--<box size="1 1 1"/>--> <cylinder radius="0.5" length="0.1" /> <!--<sphere radius="0.3
2021-11-21 11:34:51
661
原创 Part5.1.1 ros机器人仿真 URDF篇 初识
1.URDFURDF是 Unified Robot Description Format 的首字母缩写,直译为统一(标准化)机器人描述格式,可以以一种 XML 的方式描述机器人的部分结构,比如底盘、摄像头、激光雷达、机械臂以及不同关节的自由度…,该文件可以被 C++ 内置的解释器转换成可视化的机器人模型,是 ROS 中实现机器人仿真的重要组件。2.RVIZRViz 是 ROS Visualization Tool 的首字母缩写,直译为ROS的三维可视化工具。它的主要目的是以三维方式显示ROS消息,可以
2021-11-21 11:05:52
328
原创 Part4.4ros中的坐标变换 实操
1.实现小乌龟追随案例一只小乌龟在前面跑,另一只追在后面2.launch文件集成<launch><!--小乌龟生成和键盘控制节点--> <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node" output="screen"/> <node pkg="operation" type="turtlesim_new" name="turtlesim_new" output="scree
2021-11-19 16:48:05
586
原创 Part4.3 ros中的坐标变换多坐标变换
1.实现目标相对与world坐标系,有两个子坐标系,已经知道子坐标系的位置,求son1相对于son2的位置2.发布两个坐标系相对于world的位置,用launch文件实现<launch><!--发布son1和son2相对于world的关系--><node pkg="tf2_ros" name="son1toworld" type="static_transform_publisher" args="5 0 0 0 0 0 /world /son1" output="s
2021-11-19 10:35:53
853
原创 Part4.2 ros中的坐标变换 动态坐标变换
1.实现目标 实时接受小乌龟坐标系相对于word坐标系的位置关系然后把乌龟坐标系中的点转变为world坐标系中的点2.发布方实现#include "ros/ros.h"#include "turtlesim/Pose.h" //乌龟姿态的消息类型#include "tf2_ros/transform_broadcaster.h" //发布对象依赖的头文件#include "geometry_msgs/TransformStamped.h" //组织发布坐标系之间的关系所需要的头文件#inclu
2021-11-18 17:35:21
478
原创 Part4.1ros中的坐标变换 静态坐标变换
1.简述本例来实现一个座标点在另一个坐标系中的转换,其中转换函数ros已经给封装好了。依赖的功能包:tf2、tf2_ros、tf2_geometry_msgs、roscpp rospy std_msgs geometry_msgs2.发布方的实现去发布两个坐标系之间的关系#include "ros/ros.h"#include "tf2_ros/static_transform_broadcaster.h" //发布对象依赖的头文件#include "geometry_msgs/Transfo
2021-11-18 11:54:31
1366
原创 Part3.2 launch 文件的应用(其他元素)
1.node中的属性之argsargs 是把外部的参数传到node节点中去。<launch><node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node"/><node pkg="operation" type="turtlesim_new" name="turtlesim_new" args="5 5 1.7 turtlesim2" output="screen"/></launc
2021-11-16 16:07:46
681
原创 Part3.1 launch 文件的应用(基本元素)
1.launch简介用简短的一句话来形容launch就是,批量发布节点的机器。为使用者一次性发布多个节点,以及对每个节点进行配置提供了便利。2.最简单的launch文件<launch> <node pkg="turtlesim" type="turtlesim_node" name="turtlesim_node"/><node pkg="turtlesim" type="turtle_teleop_key" name="turtle_teleop_key"/&
2021-11-16 09:51:02
207
原创 Part2.3.3 参数通信实际操作 C++实现
用两套API来实现小乌龟显示背景的更换#include "ros/ros.h"/*更换小乌龟的显示背景*//* ding@ding-TravelMate-P259-G2-MG:~$ rosparam list/rosdistro/roslaunch/uris/host_ding_travelmate_p259_g2_mg__44777/rosversion/run_id/turtlesim/background_b/turtlesim/background_g/turtlesim/b
2021-11-12 20:24:48
797
原创 Part2.3.2 参数通信的实践 (C++)
本文以c语言为例子,对参数进行增删改查的操作#include "ros/ros.h"/* 实现参数的新增和修改 需求:首先设置小车的共享参数和类型,半径 0.5 然后修改为 0.2 实现:使用两套API 使用1.ros::NodeHandle setParam(“键”,值) 2.ros::param set("键",值)*/ int main(int argc,char *argv[]) { ros::init(argc
2021-11-12 19:00:02
820
原创 Part2.3.1 初识ros(noetic) 通信方式总结 参数通信
1.理论模型参数服务器实现是最为简单的,该模型如下图所示,该模型中涉及到三个角色:ROS Master (管理者)Talker (参数设置者)Listener (参数调用者)整个流程由以下步骤实现:1.Talker 设置参数Talker 通过 RPC 向参数服务器发送参数(包括参数名与参数值),ROS Master 将参数保存到参数列表中。2.Listener 获取参数Listener 通过 RPC 向参数服务器发送参数查找请求,请求中包含要查找的参数名。3.ROS Master 向
2021-11-12 18:57:12
292
原创 Part2.2.3 服务通信实际操作 C++实现
调用服务去生成一只新的乌龟与话题通信类似,首先去获得所有服务的话题,/spawn .然后查看话题的类型,turtlesim/Spawn,然后查看消息的具体内容都包括什么,具体的代码实现如下所示。#include "ros/ros.h"#include "turtlesim/Spawn.h"#include <cstdlib>/*调用服务/spawn 去生成一只新的乌龟ding@ding-TravelMate-P259-G2-MG:~$ rosservice list/clear
2021-11-12 18:40:04
807
原创 Part 2.2.2 服务通信的实践 (C++)
自定义消息类型首先在功能包下新建srv文件夹,然后创建srv文件 。本次例子是来实现客户端提交两个数,服务端来进行求和。配置文件如下:订阅方的实现:#include"ros/ros.h"#include "service_client/Sum.h" //自定义服务消息类型#include <cstdlib>int main(int argc,char *argv[]){ ros::init(argc,argv,"Sum_client"); //初始化节点 if(
2021-11-12 11:52:15
975
原创 Part2.2.1 初识ros(noetic) 通信方式总结 服务通信
服务通信理论模型 服务通信较之于话题通信更简单些,理论模型如下图所示,该模型中涉及到三个角色:ROS master(管理者)Server(服务端)Client(客户端)0.Server注册Server 启动后,会通过RPC在 ROS Master 中注册自身信息,其中包含提供的服务的名称。ROS Master 会将节点的注册信息加入到注册表中。1.Client注册Client 启动后,也会通过RPC在 ROS Master 中注册自身信息,包含需要请求的服务的名称。ROS Mast..
2021-11-12 10:44:16
482
原创 Part2.1.4话题通信实际操作 C++实现
1.之前大家已经知道了如何去生成小乌龟节点,本节会带着大家通过话题通信去控制小乌龟进行运动,以及去订阅乌龟的运动信息。首先,要知道控制乌龟运动的节点话题是什么首先启动 乌龟显示节点然后通过rostopic list 去查看所有的活跃话题其中/turtle1/cmd_vel 是速度订阅话题,接下来要看一下该话题的消息类型,通过rostopic type /turtle1/cmd_vel话题的消息类型为 geometry_msgs/Twist ,然后去看一下该消息类型的信息和参数,通过rosms
2021-11-11 17:18:15
534
原创 Part2.1.3 话题通信的实践 自定义消息类型(C++)
1 组织要发布的数据在功能包的src目录下,msg文件夹,在msg文件夹下新建msg类型的文件消息类型格式string nameuint8 sexuint8 ageuint8 unknown = 0uint8 male = 1 uint8 female = 2.xml配置文件cmake 配置文件2.发布方程序#include "ros/ros.h"#include "sub_pub/Person.h"int main(int argc,char*argv[]){
2021-11-11 10:13:44
472
原创 Part2.1.2 话题通信的实践 (C++)
1 发布方的实现/*包含的头文件*/#include "ros/ros.h"#include"std_msgs/String.h"#include <sstream>/* 发布一个话题 hello,消息类型为string*/int main(int argc,char *argv[]){ setlocale(LC_ALL,"");/*初始化ros节点 argc,和argv可用于在调用launch文件时输入参数 */ ros::init(argc,argv,"
2021-11-11 09:57:35
126
原创 Part2.1.1 初识ros(noetic) 通信方式总结 话题通信
一 . ros 的通信方式的简介1 .话题通信话题通信是ros的基本通信方式之一。话题通信实现模型是比较复杂的,该模型如下图所示,该模型中涉及到三个角色:ROS Master (管理者)Talker (发布者)Listener (订阅者)ROS Master 负责保管 Talker 和 Listener 注册的信息,并匹配话题相同的 Talker 与 Listener,帮助 Talker 与 Listener 建立连接,连接建立后,Talker 可以发布消息,且发布的消息会被 Listene
2021-11-09 21:23:25
1006
原创 part 1 ros的安装
ROS 的安装1.关于ros是什么,很多教程都给出了解释,在此不再赘述。只是给出在ubuntu上安装ros的步骤。2.2.1配置ubuntu的软件和更新配置ubuntu的软件和更新,允许安装不经认证的软件。首先打开“软件和更新”对话框,具体可以在 Ubuntu 搜索按钮中搜索。打开后按照下图进行配置(确保勾选了"restricted", “universe,” 和 “multiverse.”)2.2.设置安装源sudo sh -c 'echo "deb http://packages.ro
2021-11-08 21:38:08
217
原创 队列的操作集合
一 循环队列的操作集合循环队列的存储结构typedef struct QNode *PtrToQNode;struct QNode{ ElementType *Data; int front; int rear; int MaxSize;};typedef PtrToQNode Queue; 队列的创建Queue CreateQueue (in...
2020-02-19 23:12:41
552
原创 堆栈的基本操作集合
堆栈是类似于容器的一种数据结构,先进到容器的最后出容器。顺序栈的存储结构:typedef int Position;typedef struct SNode *PtrToSNode;struct SNode { ElementType *Data; Position Top; int Maxsize;};typedef PtrToSNoSNode Stack;顺序栈...
2020-02-18 22:03:06
1553
原创 线性表的操作集合
线性表的操作集合一. 线性表的顺序存储存储结构: typedef int Position; typedef struct LNode *PtrTLNode; //PtrTLNode为指向LNode类型的指针; struct LNode{ ElementType Data[MAXSIZE]; Position Last; }; ...
2020-02-18 20:46:34
431
原创 PTA 乙级·1095 解码PAT准考证 (25 分)
1095 解码PAT准考证 (25 分)PAT 准考证号由 4 部分组成:第 1 位是级别,即 T 代表顶级;A 代表甲级;B 代表乙级;第 2~4 位是考场编号,范围从 101 到 999;第 5~10 位是考试日期,格式为年、月、日顺次各占 2 位;最后 11~13 位是考生编号,范围从 000 到 999。现给定一系列考生的准考证号和他们的成绩,请你按照要求输出各种统计信息。输...
2019-10-06 18:17:28
175
原创 PTA 乙级1094 谷歌的招聘 (20 分)
#include<stdio.h>#include<stdlib.h>#include<math.h>int isp(int t);int main(){ int l,k; char num[2000]; scanf("%d %d",&l,&k); getchar(); int i,j; ...
2019-10-05 14:31:33
857
1
原创 1093 PTA 乙级字符串A+B (20 分)
1093 字符串A+B (20 分)给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集。要求先输出 A,再输出 B,但重复的字符必须被剔除。输入格式:输入在两行中分别给出 A 和 B,均为长度不超过 106 的、由可见 ASCII 字符 (即码值为32~126)和空格组成的、由回车标识结束的非空字符串。输出格式:在一行中输出题面要求的 A 和 B 的和。输...
2019-10-03 21:19:07
180
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人