- 博客(70)
- 收藏
- 关注
原创 ubuntu20显示未知dispaly
问题Intel12代CPU装了ubuntu20后核显无法识别屏幕,以及无法扩展屏幕解决# 打开grub文件sudo vim /etc/default/grub# 将对应参数修改GRUB_CMDLINE_LINUX_DEFAULT="quiet splash i915.force_probe=4680"# 更行grubsudo update-grub# 重启reboot...
2022-04-05 18:28:51
2859
原创 ROS_rosbag使用注意点
无法对tf的内容进行录制问题描述:当我们利用rosbag record对/tf进行录制时,有时候会发现有些节点并没有被录制,而这些节点确实存在。比如我们利用robot_state_publisher发布机器人的关节tf信息,就会出现该问题。进一步仔细观察导出的tf树图,我们可以发现问题:没有被录制的节点并没实时在发布tf信息,所以才导致了该问题。解决方法:这是由于ros添加了tf_static机制,使得对相对固定的tf不必重复发布,从而占用宝贵的带宽。我们只需在关闭该功能即可: <no
2022-03-06 22:34:12
1128
2
原创 在 Ubuntu 中监控 CPU 和 GPU 的 2 个图形可视化工具
Sysmon对以下数据进行了图形可视化:CPU 利用率和每核时钟速度GPU 利用率和时钟速度(目前只有 Nvidia)。应该与多个 GPU 一起工作(未经测试)内存和交换利用率网络利用率(WLAN 和以太网)。WLAN 链路带宽不断更新。HDD/SSD 利用率。安装运行:pip install sysmon要运行该程序,只需在终端中运行:sysmon如果您想监控您的 Nvidia GPU,则必须安装 nvidia-smi。官方链接Conky这是一个极具创造力的小工具,我
2022-02-23 14:04:25
13017
原创 ROS_TF API详解_基础监听与广播
广播类API仅有一个类:TransformBroadcaster:用于定义初始化,queue_size为最大队列数,默认为100:import tfimport rospyrospy.init_node('tf_broadcaster')br = tf.TransformBroadcaster(queue_size=100)并具有以下功能函数:sendTransform(self, translation, rotation, time, child, parent):用于广播信息到 /t
2022-02-10 23:43:47
1392
原创 ROS_TF报错汇总
编写时出错在进行tf广播时出现以上错误,出现以上错误,汇总各种可能的改进建议:# 首先建议使用tf2,替代tf1import tf2_rosm=tf2_ros.TransformBroadcaster()# 时间戳使用now(),并且注意在发布时前实时更新t.header.stamp = rospy.Time.now()m.sendTransform(t)运行其他时出错首先可视化tf节点信息,第一个用不了用第二个,tf2_tools可能不是预装好的:rosrun tf view_fr
2022-02-10 16:32:07
3648
1
原创 #4 SLAM_Transformation Matrices(变换矩阵)
基础功能来表示全局坐标系中相对坐标系的方向和位置将一个坐标系的点或向量,映射到另一个坐标系对点或向量在同一坐标系中进行缩放、旋转和平移之类的子变换,并且功能进行合并或拆分表达变换矩阵对点或向量的操作平移、旋转、缩放和剪切的任何组合都可以组合在一个 4 x 4 仿射变换矩阵中:M=(a11a12a13a14a21a22a23a24a31a32a33a340001)\mathbf{M}=\left(\begin{array}{cccc}a_{11} & a_{12} & a_{
2022-02-09 02:02:21
2255
原创 #3 SLAM_Environment perception(环境感知模型)
环境感知方式机器人获取环境信息的方式是多种多样的,常用的几个我们将它分为以下几类:激光雷达,包括2D和3D雷达。纯视觉,包括单目相机和双目相机视觉加深度感知,包括红外结构光相机和TOF相机等。以上的方法都有各自的优缺点,在复杂环境下通常我们需要其中的组合融合方式来提高系统的鲁棒性。2D激光雷达数学模型二维激光雷达是由一束在平面上旋转的激光束和一个测量反射光的飞行时间的接收器组成的。对于每个激光方向,传感器记录一个距离,计算为飞行时间的一半乘以光速。结果是距离 did_{i}di 的大小为
2022-02-04 16:45:46
2098
原创 #2 SLAM_Modeling motion(运动建模)
基本模型一般的时态预测模型可以写成以下形式:其中的参数定义描述为:xn\mathbf{x}_{n}xn:是在tn≜nΔtt_{n}\triangleq n \Delta ttn≜nΔt时的空间状态。xn−1\mathbf{x}_{n-1}xn−1:上一个空间状态。fnf_{n}fn:一般是非线性函数un\mathbf{u}_{n}un:是运动控制信号i:是个扰动期望轨迹的随机脉冲矢量,一般认为是高斯协方差Q为了方便表述和简化符号,我们通常会引入了箭头赋值操作符"←",意思是左
2022-02-03 10:55:24
1297
原创 #1 SLAM_Rigid body transformation(刚体变换)
对于刚体而言,它们的所有组件(零件、点、面或任何东西)都在一个自身的局部参考系中刚性地指定(它们在这个参考系中构成常数参数,即位置相对固定)。因此,刚性物体的运动可以完全由自身参照系的运动来表示。(参考系与坐标系的区别)参考系定义相对参考系(Reference frame)由其处于另一参考系的坐标系(Coordinate)原点的位置(Position)和方向(Orientation)定义,并将该参考系称为父参考系(Parent frame)。我们将所有参考系的父参考系称为全局参考系,全局参考系通常被
2022-02-02 18:37:33
2305
原创 线代_行列式的几何意义
行列式(Determinant),记作det(A)或|A|,是一个在方阵(n*n)上计算得到的标量。行列式可以看做是有向面积或体积的概念在一般的欧几里得空间中的推广。书写法矩阵A的行列式记作det(A),行列式经常使用竖直线记法行列式在二维欧氏空间的几何意义在一个二维平面上,两个向量和的行列式是X=(a,c)和X′=(b,d)的行列式是:当系数是实数时,行列式表示的是向量X和X’形成的平行四边形的有向面积,并有如下性质:行列式为零当且仅当两个向量共线(线性相关),这时平行四边形退化成一条
2022-01-30 23:41:31
2723
原创 Cmake更新,在不卸载自动安装项的情况下
问题在卸载旧的cmake时会出现连同一起安装的自动安装项一起卸载的问题。解决方案到cmake官网下载新版本cmake:Linktar -zxvf cmake-3.22.2.tar.gzcd cmake-3.22.2 # or wherever you downloaded cmake./bootstrap --prefix=$HOME/cmake-installmake make install#打开.bashrc文件,将cmake的环境路径添加进去sudo gedit ~/.
2022-01-26 18:08:31
1249
原创 Open3D编译问题
编译时出现以下报错:CMake Error at 3rdparty/find_dependencies.cmake:934 (find_library):Could not find CPPABI_LIBRARY using the following names: c++abiCall Stack (most recent call first):CMakeLists.txt:445 (include)可以尝试安装:sudo apt-get install libc++-7-devsudo
2022-01-26 17:57:24
1508
原创 基于ROS的相机校准(camera_calibration & image_proc)
目的:使用棋盘校准单目或立体相机相机校准参数的获得rosrun camera_calibration cameracalibrator.py --size 8x6 --square 0.108 --k 6 image:=/my_camera/image –size 8x6:棋盘大小为 8x6,仅计算内角–square 0.024:棋盘中的一个正方形大小,以米为单位–k 6:要使用的径向失真系数的数量(最多6,默认 2)image:= 相机发布的图片主题名运行后订阅 ROS 原始图像主题
2022-01-25 15:07:08
6311
原创 设置Realsense的conda环境
conda create -n py3d python=3.8pip install opencv-pythonpip install pyrealsense2pip install open3dopen3d:Lnikopencv-python:Linkpyrealsense2:Link
2022-01-24 14:05:40
677
原创 Linux对多相机的支持(内存分配)
默认情况下,基于 Linux 的主机只为 USB 控制器分配 16 MB 的内核内存来处理 USB 传输。此数量通常足以支持单个深度相机。但是,要支持多个设备,USB 控制器必须有更多的内存。编辑 / etc/default/grub找到以下行:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"使用此行替换它:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.usbfs_memory_mb=32"这些命令将 USB 存
2022-01-20 12:18:24
1144
原创 ROS的image_proc图像校正模块
简介ROS image_proc : Link通常该算法位于相机驱动程序和视觉处理节点之间。image_proc从单幅原始图像流中进行图像校正和颜色处理,以去除相机的失真。常用节点image_proc/debayer获取原始相机流并发布它的单色和彩色版本。如果原始图像是 Bayer 模式,则使用双线性插值进行 debayers。订阅的主题image_raw ( sensor_msgs/Image )来自相机驱动程序的原始图像流。发表的主题image_mono ( sensor_msg
2021-12-20 16:54:01
2906
2
原创 linux的中文输入法设置
googlepinyinsudo apt install im-configim-config# 根据提示,选择fcitxsudo apt install fcitx-googlepinyinsogoupinyin下载网址:link点击下载后将转到安装简介
2021-12-20 00:01:32
311
原创 ROS回调函数的形参传递过程
例子我们先随便看一个订阅器的回调函数:void gpsCallback(const topic_demo::gps::ConstPtr &msg){ //计算离原点(0,0)的距离 std_msgs::Float32 distance; distance.data = sqrt(pow(msg->x,2)+pow(msg->y,2)); //float distance = sqrt(pow(msg->x,2)+pow(msg->y,
2021-12-17 00:55:34
1579
原创 ubuntu20安装Azure Kinect SDK与ROS驱动
安装Azure Kinect SDK由于目前官方的SDK优先支持ubuntu18,也可以装在20上,但是测试最新的版本不支持,测试1.3版本已通过。$ curl -sSL https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -$ sudo apt-add-repository https://packages.microsoft.com/ubuntu/18.04/prod$ curl -sSL https://pa
2021-12-07 15:10:50
2761
2
原创 ubuntu 20 安装synergy失败解决办法
问题描述sbdx@labmsi:~/Downloads$ sudo dpkg -i synergy_1.8.8-stable+dfsg.1-1build1_amd64.deb 正在选中未选择的软件包 synergy。(正在读取数据库 ... 系统当前共安装有 203184 个文件和目录。)准备解压 synergy_1.8.8-stable+dfsg.1-1build1_amd64.deb ...正在解压 synergy (1.8.8-stable+dfsg.1-1build1) ...dpkg
2021-12-06 15:37:41
2119
1
原创 Realsense学习--双相机点云实时注册
思路利用双相机的棋盘校正内角点的空间坐标推导出其中一个相机点云相对另一个相机点云的坐标系的空间转换矩阵。代码import pyrealsense2 as rsimport cv2import numpy as npimport timeimport osimport sysimport open3d as o3d from tools import rgbdTools, registrationif __name__ == '__main__': # 有几个棋盘校正图
2021-05-20 13:18:54
645
3
原创 Realsense学习--棋盘校正
棋盘矫正由于棋盘校正时的内角点是较为优秀的特征点,能够为我们对相机的校正和模型的匹配提供很好的基准。尤其在深度相机中,通过在RGB中提取内角点,再结合深度图即可得到对应点的空间坐标。关键函数def findChessboardCorners(image, patternSize, corners=None, flags=None): """ . @param image Source chessboard view. It must be an 8-bit grayscale o
2021-05-20 13:07:35
875
1
原创 Realsense学习--RGBD与点云显示
所使用到的主要模块介绍这里主要想要实现Realsense深度相机的点云建模并显示:pyrealsense2 1,这是intel的官方库的python版本,主要实现对相机所采集的RGB与深度图像进行处理;numpy ,对图像数据进行转换保存;cv2 ,实现RGB与深度图像的显示;open3d2 ,重点库,实现利用RGBD数据进行点云重建,并显示点云;直接上代码代码来github 3,我主要就是整理了一下并且添加了中文注释~import pyrealsense2 as rsimport n
2021-05-19 12:31:31
3578
7
原创 ROS学习--rostopic工具
rostopic包含rostopic命令行工具,用于显示有关ROS主题的调试信息,包括发布者,订阅者,发布率和ROS消息。它还包含一个实验性Python库,用于动态获取有关主题的信息并与之交互。rostopic bw (bandwidth 带宽)$ rostopic bw /topic_name注意:报告的带宽是接收的带宽。如果存在网络连接问题,或者如果rostopic跟不上发布者,则报告的数字可能低于实际带宽。rostopic delay$ rostopic delay /topic_nam
2020-12-24 15:10:36
7071
原创 Gazebo仿真--rqt工具介绍
rosrun rqt_image_view rqt_image_view使用image_transport显示图像/视频,对当前的topic中的图像进行显示.rosrun rqt_graph rqt_graph 显示当前的通信结构
2020-12-23 20:53:34
436
原创 Gazebo仿真--IMU传感器插件
模拟一个惯性运动单元传感器,与IMU(GazeboRosIMU)的主要区别是:-从SensorPlugin继承而不是ModelPlugin,-测量是由gazebo ImuSensor给出的,而不是由ros插件计算的,-重力包括在惯性测量中。 <gazebo reference="imu_link"> <gravity>true</gravity> <sensor name="imu_sensor" type="imu"> <
2020-12-23 15:23:11
3405
原创 Gazebo仿真--差动控制插件
Gazebo中的差动驱动机器人提供基本控制器。需要一个定义明确的差动驱动器机器人才能使用此插件。<gazebo> <plugin name="differential_drive_controller" filename="libgazebo_ros_diff_drive.so"> <!-- 插件数据topic更新速度 Hz --> <updateRate> 50 </updateRate> <!-- 左关节
2020-12-23 14:50:06
1713
原创 Gazebo仿真--加载世界模型
加载世界模型例子:<launch> <include file="$(find gazebo_ros)/launch/empty_world.launch"> <arg name="world_name" value="worlds/mud.world"/> <!-- Note: world_name与GAZEBO_RESOURCE_PATH环境变量有关,所以当我们需要加载自己设定的世界环境时,只需要修改这个的文件地址即可,而且empty_world
2020-12-22 20:05:19
944
原创 Gazebo仿真--Gazebo插件与ROS
插件为URDF模型提供了更大的功能,并且可以将ROS消息和服务呼叫联系在一起,以实现传感器输出和指令输入。插件类型URDF文件引用几种类型:ModelPlugins,提供对Physical :: Model API的访问SensorPlugins,提供对传感器:: Sensor API的访问VisualPlugins,提供对render :: Visual API的访问添加一个 ModelPlugin简而言之,将ModelPlugin插入元素内的URDF中。在之中,以指示传递给gazebo
2020-12-10 21:03:10
469
原创 ROS学习--Launch文件中引用其他Launch文件
功能在launch文件中可以使用tag来引用已经写好的launch文件,当然这个tag也可以引用例如.xml等文件。<include>例子:<launch> <arg name="debug" default="false"/> <include file="$(find gazebo_ros)/launch/world.launch"> <arg name="debug" value="$(arg debug)" /&
2020-12-10 19:31:03
4772
原创 RoboWare Studio安装时,未安装软件包libgconf-2-4
最近,当尝试在我的Ubuntu计算机上安装RoboWare Studio时,遇到了以下错误:当下载好.deb文件后,执行sudo dpkg -i XXXXXXXX_amd64.deb如果遇到以下错误:Package libgconf-2-4 is not installed只需执行以下命令以安装缺少的依赖项,就可以顺利进行了。sudo apt-get install -f希望能帮助到你~~~~...
2020-12-08 13:46:52
5266
9
原创 Gazebo仿真--URDF与SDF的区别
**统一机器人描述格式(URDF)**是ROS用于描述机器人的所有元素的XML文件格式。要在gazebo中使用URDF文件,必须添加一些其他特定于仿真的标签才能与gazebo一起正常使用。尽管URDF在ROS中是一种有用且标准化的格式,但它们缺少许多功能,并且尚未进行更新以应对机器人技术的不断发展的需求。URDF只能单独指定单个机器人的运动学和动力学特性。URDF无法指定世界中机器人本身的姿势。它也不是通用的描述格式,因为它不能指定关节环(平行连接),并且缺乏摩擦和其他特性。此外,它不能指定不是机器人的东
2020-12-08 10:45:50
1257
原创 Gazebo仿真--疑难问题:模型修改1
当我们需要修改模型时发现,如果我们单单修改可视化的几何体积时,在模型的外围还有一层透明的模型,并且在模拟中一直悬空着,这时候应该可以想到这是有可能是碰撞模型的问题。在第三栏的碰撞设置中,果然有碰撞模型的几何体积的设置,当我们修改两个体积的大小相同时,遇到的问题也就解决啦~~...
2020-12-08 10:30:57
1872
原创 传感器与传感器融合
在一个无法预知全部信息的多变环境中,对于移动机器人而言利用传感器实时识别当前环境是最为重要的一环。对于一个生物而言,视觉能够提供丰富的信息并利用这些信息来导航、计划、决策。相同的对于移动机器人而言,视觉也是基本的标配传感器。随着图像处理技术的发展,这种情况尤其明显。图像处理技术有助于从静止或移动的摄像机拍摄的图像中提取更有用的信息。所以首先要关注的是利用视觉来为无人车导航,以及对视觉传感器的要求,分析其特点与性能限制。各种技术目前使用在道路和车辆跟踪,并做障碍检测。随着各种视觉传感器提供的丰富信息,为了
2020-12-02 20:25:16
160
原创 位置与姿态
在数学中数字是极为重要的,我们可以用数字来计数,比如这里有两个苹果。通常会在数字后面加上单位,比如那个东西离这2米远,以上的单个数字称为标量。当我们将其再加上位置时,例如那个东西离这正北方2米远,则称为矢量。或许我们还想知道它的方向,我们还会加上:那个东西离这正北方2米远,朝向正东方。并将位置与方向的结合称为姿态...
2020-11-28 12:58:17
1289
原创 C++的编程规范学习
C++的文件结构在C/C++中通常都存在两个文件。 - 头文件以.h为后缀的,用于保存程序的声明。 - 定义文件以.cpp等形式存在,用于保存程序的实现。头文件头文件的主要作用在于多个代码文件全局变量(函数)的重用、防止定义的冲突,对各个被调用函数给出一个描述,其本身不需要包含程序的逻辑实现代码,它只起描述性作用,用户程序只需要按照头文件中的接口声明来调用相关函数或变量,链接器会从库
2020-10-11 09:36:55
120
原创 ROS学习--ROS编译系统
简介在ROS中我们直接编写cpp或py文件,而非可以直接执行的二进制文件,并且ROS的分布式架构使得交叉编译过程也是极为繁琐与困难,ROS最新提供了catkin编译系统,让开发者可以不用太考虑这些问题,它极大的简化了编译构建过程,能够管理复杂大型项目,具有良好的扩展性。在ROS的发展中上一代的编译系统是rosbuild,目前已经淘汰,Catkin具有更好的效率与扩展性。其实不论是catkin还是rosbuild,其实都是在最底层的gcc、g++的包装再包装,目的就是降低开发者在使用中的难度,让开发者有
2020-10-08 15:36:32
1628
原创 ESP32-TCP
概述TCP/IP的概念是很大的一个概念,也是当今计算机网络世界中使用最为广泛的协议。它的规范横跨软硬件的很多内容,其中TCP与IP其实也是可以分开为两种协议,但那时多数情况下,他只是利用IP进行通信时所必须用到的协议群的统称。停!不再展开了,其实也和编程关系不大[/手动狗头]~简单而言,这就是有一群人为了统一便于大家计算机之间的数据传输定下来的一个约定,大家都按照这个协议制造硬件(比如网卡)、编写软件。现在几乎全部的网络设备都支持TCP/IP协议,只有协议统一,数据才能在各类设备中通行无阻。名词扫盲
2020-07-23 20:50:51
1830
原创 ESP32-Scan扫描
概要简单而言就是找出空间中存在的所有WiFi信号,就像我们用手机打开WiFi功能后可以浏览附近的可用WiFi。而扫描网络需要数百毫秒才能完成。当我们触发扫描功能,等待完成并提供结果时,这可以通过一次运行来完成-所有这些都由一个功能完成。另一种选择是将其分为多个步骤,每个步骤由一个单独的功能完成。这样,我们可以在扫描过程中执行其他任务。这称为异步扫描。API分析1.1、启动扫描/** * Start scan WiFi networks available * @param async
2020-07-23 15:13:57
2140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人