- 博客(96)
- 资源 (13)
- 收藏
- 关注
原创 树莓派5 bookworm远程桌面方案
打开系统Preference-> Raspberry Pi Configuration -> Interface -> VNC,就可以了VNC的优点是图像显示较好,但是难以调整分辨率等。客户端这边用vncviewer连接。
2025-02-27 17:22:47
157
原创 机载视频流回传+编解码方案
image_transport republish (已经是的可省略) +republish image话题(仅rqt查看可省略)h264解码 (此处应有ROS image话题)+h264编码(gstreamer) +image_transport解码 +h264编码(gstreamer) +rtsp+h264已编码。接收theora话题 +无线网络,低带宽场景。传输theora话题。
2024-11-27 14:01:25
718
原创 usb_cam ros包话题说明,image transport包使用
theora是一个开源的编码解码库,相较于H264性能差一些,也不支持硬件加速,默认是cpu软件编码解码。theora相较于jpeg和png,考虑了帧之间的联系,因此。png是无损压缩,压缩时间更长,一般视频流用jpeg压缩,图片或者深度图可以用png压缩。读取这些话题,除了image_raw可以直接用ros subscriber订阅,其余。如果不使用动态调整工具,可以直接通过 ROS 参数服务器修改相关参数。图像处理和分析,例如使用 OpenCV 处理图像。,我理解每帧只传输了帧之间的差异。
2024-11-27 11:12:33
420
原创 word图题表题公式按照章节编号(不用题注)
预期效果:其中3表示第三章,4表示第3章里的第4个图。标题、公式编号也是类似的。为了达到这种按照章节编号的效果,原本可以用插入题注里的“包含章节编号”但实际情况是,这不仅需要一级标题的序号是用“开始->多级列表”自动生成的,而且一级标题对应的章节号往往是汉字“一”、“二”,而不是阿拉伯数字。所以改用另一种方法,自己插入域代码:参考。
2024-06-27 17:49:41
1234
原创 ubuntu20修改xorg.conf实现双屏幕输出
其中Identifier可以自己命名,区分开就行,Driver其实没那么重要,因为系统会根据插槽上实际的显卡来安排Driver,里面也不是所有参数都是必须的,缺省的系统会自动安排。但有时候有的屏幕输出不对,想手动固定一下配置。如果显卡工作正常是不需要自己手动编写xorg.conf的(这个文件一般不存在或者是空的),系统会根据xorg.conf的缺省自动设置屏幕。我的电脑输出是01:00.0是nvidia显卡,0:2.0是intel集显,注意是十六进制,busID是十进制。
2024-02-16 11:18:29
3142
原创 GPU独显下ubuntu屏幕亮度不能调节解决方法
我自己用pyqt写了一个ui界面,直接调整 /sys/class/backlight/xxx/brightness的亮度:
2024-02-16 10:31:21
1614
原创 C++类成员变量初始化顺序陷阱
因为成员变量的初始化次序是根据变量在内存的次序有关系,而变量的内存排列顺序,早在编译期就根据变量的定义次序决定了。这里a_和b_按照定义的顺序来初始化,也就是a_初始化的时候b_还没初始化呢,a_不一定是5。下面这种也是一样的,a_和b_是按照定义的顺序来初始化,即a_初始化的时候b_还没初始化呢。这里肯定是a_先初始化,b_后初始化。,更好的做法是都在构造函数内部初始化。
2024-01-25 22:49:02
486
原创 PX4经纬度转东北天坐标c++代码
附上geo.h和geo.cpp,编译的时候可以把geo.cpp编译成一个library再链接到你的程序,或者和你的程序一起编译。float的精度是不能满足小数点后七到八位的要求的。
2024-01-25 22:30:52
772
原创 mavros和PX4中的海拔高与椭球高转换
同一个位置的两种高度值一般可以相差几十米,只是因为当地平均海平面是和地形有关的,凹凸不平没有规律。而ellipsoid height采用的基准是地球标准椭球模型,它的高度值和地形没有关系,只和到地心的距离有关。下文的mavros指ros1 noetic版本的,ros2版本的我还没研究。
2024-01-25 22:13:40
2105
原创 c++信号槽signal2的用法
这里连接信号connect后的函数不能呢个直接用ClassA::func,因为它还没有实例化。所以这里必须用boost::bind处理一下这个类里的函数,把this包含进去,从而让程序在运行时能知道这个函数具体是那个对象的。placeholders时占位符,函数有几个参数就需要几个占位符。c++ boost库提供的signal2很好用,适用于某一处需要执行多个函数,但是具体的函数个数和种类需要在运行时调整的情况。类似的std库里也有std::bind和std::placeholders。
2024-01-25 20:59:23
508
原创 c++类中实例化对象的正确方法
通过拷贝内部的shared_ptr巧妙地解决了这个问题。这是我在阅读ROS1源码时学到的方法,ROS1的subscriber、publisher、timer都是这种构造方式。
2024-01-25 17:27:45
1182
原创 ROS1 nodelet用法
nodelet的好处:进程内的ROS话题发布和接收可以省去序列化和反序列化、socket通信的过程,而是通过shared_ptr共享内存实现,对于数据量大的话题也许可以降低延迟减少丢包。但前提是publisher必须用shared_ptr的方法发布话题,比如:
2024-01-25 16:32:30
564
原创 ROS1节点到底有几个线程
python版本的ROS1节点会给每个subscriber,每个timer新建一个线程。c++版本的ROS1节点要复杂得多。roscpp建立了一个global callback queue回调队列,所有的subscriber和timer都将自己的回调add到这个callback queue上.
2024-01-25 15:55:42
1481
原创 ROS导出library供其他ROS包使用
如果想用自己的so动态链接库,一种方法时在target_link_libraries时把这个so库的路径加上。当然如果这个so库本身也是ROS包导出的,那么可以导出到catkin_libraries,这样。
2024-01-24 17:27:01
611
原创 慎用少用c++的static和extern变量-几个常见错误
普通的变量是局部的,只存活于它所在的那个大括号(局部作用域)里,程序运行到超出这个区域后就会被销毁。static修饰的静态变量由于存储于进程的全局数据区,即使程序运行超出了它所在的大括号,该变量依然保持。这貌似给写程序带来了一些便利,但由于类中的static变量是由该类的所有实例化对象所共有,这往往不是我们想要的。举几个常见的例子:比如要写一个周期判断函数,需要记录上一时刻的时间: 这个func函数为了完成计时功能,需要让类ClassA定义一个last_time。如果用static变量就会让f
2024-01-24 17:01:24
1345
原创 c++模板函数的声明和定义必须在一个文件
非要分开写的话,需要在cpp文件中进行模板的显式实例化,但这需要把所有用到的T都列出来。或者在头文件末尾include 这个cpp文件,但这本质和写在一个头文件没有区别,而且由于cpp文件往往没有防止重复include的机制,链接时容易报错重复定义。不同于一般c++函数,声明可以在头文件,定义可以在cpp文件。模板函数的声明和定义必须放在一起,否则编译链接会报错。
2024-01-24 14:58:50
817
原创 ubuntu20根目录扩容
首先,如果你是双系统,需要从windows系统下磁盘压缩分配一部分未使用的空间给ubuntu,注意压缩的空间要邻接ubuntu所在盘的位置。ubuntu根目录/ 或者 /home文件夹有时出现空间满了的情况,可以用gparted工具进行空间的重新分配。resize分配好后点击确认即可,根据硬盘空间大小重分配空间大概需要10MB/s,我用了接近1个小时完成。首先,制作一个安装ubuntu20的系统安装U盘。如果仅仅是把/home文件夹的空间分给/ ,则不需要压缩新空间。退出u盘系统,重新进入ubuntu。
2024-01-24 13:58:35
1145
原创 C++函数返回值类型不确定处理办法-函数重载
这样定义肯定是会报错的。因为同名函数的重载只能用于参数列表或者实现(定义)不同,而不能用于返回值不同的情况。对于需要改动的值不加const,对于输入值可以加const保护一下不被修改。换一个思路,可以利用c++函数参数的。
2023-12-14 12:35:05
521
原创 c++用#define宏定义来批量实例化对象
如果之后还要对这些对象都进行统一的一系列操作,比如obj1.update(), obj2.update(), ...那就会显得代码非常冗长。此时可以用宏定义来生成类似的模板。参考自 PX4-Autopilot/platforms/common/include/px4_platform_common/param.h。如果要定义的类很多,那 DEFINE_CLASSES 宏定义就会写的特别长。,里面包含了APPLY_ALL宏定义,最多支持149个参数。其中 __VA_ARGS__ 表示 (...) 中的参数。
2023-12-14 11:19:35
442
原创 VScode+texlive+sumatraPDF实现正反向搜索
注意:如果不先打开SumatraPDF,而是直接在vscode中 ctrl+alt+V 打开SumatraPDF,反向搜索会失效。SumatraPDF是一个PDF阅读器,也可以不安装而用vscode内部的PDFviewer,但是实现不了正反向搜索功能。:先打开SumatraPDF,再在vscode中 ctrl+alt+V 打开PDF,然后在sumatraPDF中双击。安装完成后打开cmd,输入`tex --version`能显示安装版本,则表示安装成功。安装路径必须是英文。
2023-06-05 10:38:55
3277
原创 旋翼无人机常用仿真工具
可能需要运行在gazebo上,和无人机的接口也是个问题,可以参考PX4和Ardupilot中关于airsim仿真的描述。简单的质点(也可以加上动力学姿态),用urdf模型在rviz中显示无人机和飞行轨迹、地图等。由于每架飞机真的在运行PX4飞控固件仿真,因此比较占用cpu,一般一台电脑顶多仿真10架(这也是PX4 SITL支持的上限)。支持gazebo、flightgear、jMAVSim、AirSim等仿真软件。利用gazebo仿真,提供gazebo中的简单四旋翼模型。采用虚幻引擎,戴博士搭建的?
2023-05-24 18:30:59
2083
原创 xubuntu安装VNCviewer远程桌面开机自启
树莓派cm4安装了ubuntu20.04(xubuntu桌面,不是gnome桌面),需要实现vnc远程桌面登录树莓派。此处选择tigervnc,其他的vnc比如tightvnc和vnc4server貌似不好用。
2023-05-15 23:21:35
1405
原创 ubuntu20安装electron并用electron-packager打包
这是一个用javascript写的,基于electron和nodejs的可以用浏览器打开的gui界面,其中3d显示的部分用的是Three.js。electron有一个好处是可以跨平台。
2023-05-02 19:49:12
2491
原创 多机器人集群网络通信协议分析
本文讨论的是多机器人各层的情况和协议。每个机器人连接一个数据传输通信模块(以下简称为,也泛指市面上的图传或图数一体的通信模块),数传之间进行组网来传递信息。根据ISO的划分,网络通信的OSI模型分为从低到高的7层。电气接口、线缆连接。如网口(RJ45)、RS232串口等。这一层只和硬件有关,传输的是0和1的。数传一般提供串口,但有的数传也同时提供多个串口和网口。对于单片机飞控来说,连接和使用数传的串口是比较容易的。
2023-03-07 16:28:43
3415
1
原创 ROS话题queue_size的含义与设置技巧
publisher中的10就是queue_size,大小并不太重要,一般设置为超过1就行。subscriber中的queue_size大小很重要,需要最新消息的时候queue_size要设置成1,不能遗漏消息时queue_size要设置大一些。
2023-03-04 15:52:55
3342
2
原创 APM飞控使用动捕等外部定位
机载计算机通过WIFI和vrpn_ros_client获取动捕系统(vicon或者nokov)的无人机定位数据(x,y,z+四元数),然后通过 /mavros/vision_pose/pose 的ROS话题发送给APM飞控。/mavros/local_position/pose 中的四元数可能和 /mavros/vision_pose/pose 中的四元数并不相同,比如可能转了180°。机头朝向动捕坐标系y轴正向时,mission planner上显示偏航角是0°或者360°,方向是正北。
2023-03-03 21:04:44
1929
1
原创 ubuntu Ad-Hoc组网通信
ad-hoc。无中心,自组网,不需要路由器。各个节点即是client,也都具有路由功能。配置表现为所有节点都是一个“热点”,“热点”名称相同的节点自动连接。断开WIFI,再重新打开即可自动连接到my-ad-hoc。(edimax 7811Un,7822UAn都可以)。设置手动IPv4(网关可以不设置)实测相互ping延迟均只有1ms。
2023-01-06 19:50:41
2463
1
原创 集群多机ROS通信中间件:swarm_ros_bridge
最近写了一个无线网络环境下(比如WIFI)多机ROS通信的项目swarm_ros_bridge
2023-01-06 15:45:03
4727
11
原创 安装windows+两个ubuntu(三系统)成功案例
在已有的win10+ubuntu18.04双系统基础上,再安装一个ubuntu20.04
2022-10-04 15:51:04
12308
5
原创 GPG error: https://download.docker.com/linux/ubuntu bionic InRelease: The following signatures could
解决报错GPG error: https://download.docker.com/linux/ubuntu bionic InRelease:The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 7EA0A9C3F273FCD8
2022-09-01 14:44:58
5075
4
VScode 针对latex workshop插件的settings.json 模板
2023-06-03
树莓派4b上的ubuntu-server18镜像(16GB卡)网盘地址
2022-10-09
大规模优化问题matlab代码-LBFGS/FR/PRP/BB.zip
2022-01-03
最优化方法牛顿方法matlab代码-从零开始
2021-12-08
iris_usb_camera_down.zip
2021-05-07
协同测距matlab程序和数据.rar
2021-05-01
GHOST WIN7_WIN8系统安装详细.DOC
2020-05-27
matlab的gui的slider滑动条和可编辑文本框动态调整某个参数.zip
2020-05-09
vrep和python联合仿真资料.zip
2020-03-27
乒乓球游戏机protues仿真.zip
2019-06-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人