Hero Image
搭建数据库

Docker-Mysql 1. 新建数据库 sudo docker pull mysql 2. 启动数据库 --name your-mysql-container:指定容器的名称。 -e MYSQL_ROOT_PASSWORD=yourpassword:设置 MySQL 的根用户密码(替换为你想要的密码)。 -p 3306:3306:将主机的 3306 端口映射到容器的 3306 端口。 -d:以分离模式运行容器。 sudo docker run --name mysql -e MYSQL_ROOT_PASSWORD=数据库密码 -p 3306:3306 -d mysql 3. 备份数据库 mysqldump -u your_username -p your_database_name > database_backup.sql 4. 注意事项 安装Mysql后设置lower_case_table_names属性报错 在MySQL8.0版本中,必须在初始化MySQL服务器之前将lower_case_table_names设置为所需要的值,这需要在首次启动MySQL服务器之前在MySQL配置文件中设置lower_case_table_names。但是在使用ubuntu的apt源安装MySQL时,系统会自动配置并启动MySQL服务器,这就需要在安装前提前设置好配置文件。具体操作步骤如下: <!--设置 Mysql 初始化环境--> sudo mkdir/etc/mysql/mysql.conf.d sudo vim mysqld.cnf <!--编辑mysqld.cnf文件--> [mysqld] # 0[Linux默认]:区分大小写; # 1[Windows默认]:不区分大小写; # 2[Mac默认]:存储时区分大小写,比较时不区分大小写。 lower_case_table_names=1 innodb_log_file_size = 512M innodb_strict_mode = 0 sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION" <!--安装Mysql,在安装过程中会提示存在配置文件,此时选择‘N’选项采用已经存在的配置文件--> sudo apt install mysql-server <!--Mysql配置,可根据需求设定--> sudo mysql_secure_installation <!--设置root账号密码,第一次设置时默认无密码,直接进入mysql--> sudo mysql -u root <!--登录后设置root密码--> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'mysql密码'; <!--刷新设置--> FLUSH PRIVILEGES; <!--重启Mysql服务--> sudo systemctl restart mysql <!--使用密码登录root账号--> sudo mysql -u root -p <!--输入密码--> <!--进入Mysql环境--> 设置用户可以远程登录MySQL <!--使用密码登录root账号--> sudo mysql -u root -p <!--输入密码--> <!--进入Mysql环境--> <!--设置root用户可远程访问--> UPDATE mysql.user SET Host='%' WHERE User='root' AND Host='localhost'; <!--刷新权限--> FLUSH PRIVILEGES; <!--查看权限--> SELECT Host, User FROM mysql.user; ubuntu18.04 安装mysql8.0报错 错误:1 http://repo.mysql.com/apt/ubuntu bionic InRelease 由于没有公钥,无法验证下列签名: NO_PUBKEY B7B3B788A8D3785C 解决办法: 切换为交大源。 sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C ERROR 1819 (HY000): Your password does not satisfy the current policy requirements SHOW VARIABLES LIKE 'validate_password%'; SET GLOBAL validate_password.policy = LOW; -- 选择 LOW, MEDIUM 或 STRONG SET GLOBAL validate_password.length = 6; -- 设置最小长度 ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPassword123!'; 忘记密码 停止mysql服务 sudo systemctl stop mysql 启动 MySQL 的安全模式 sudo mysqld_safe --skip-grant-tables & 使用 root 登录 MySQL mysql -u root 修改密码 USE mysql; ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; FLUSH PRIVILEGES; 退出并重启mysql服务 sudo systemctl start mysql

Hero Image
rviz可视化Marker

ROS2 visualization_msgs::msg::Marker 使用指南 1. Marker 简介 visualization_msgs::msg::Marker 是 ROS2 中用于在 RViz 可视化各种图形(如点、线、面、模型等)的消息类型,用来表示一个单独的可视化对象(比如一个点、一条线、一个球体等)。通过发布 Marker 消息,可以在 RViz 中动态显示调试信息、地图、轨迹等。 2. 常用 Marker 类型 POINTS:显示一组点 LINE_STRIP:显示一条折线 LINE_LIST:显示多条线段 SPHERE、CUBE、CYLINDER:显示几何体,分别为3D球体,立方体和圆柱体 TRIANGLE_LIST:显示三角面片 SPHERE_LIST:显示一组球体 CUBE_LIST:显示一组立方体 CYLINDER_LIST:显示一组圆柱体 3. 代码示例 以下代码展示了如何在 ROS2 中发布点云(POINTS 类型)的 Marker: // 1. 包含必要的头文件 #include <rclcpp/rclcpp.hpp> #include <visualization_msgs/msg/marker.hpp> #include <visualization_msgs/msg/marker_array.hpp> #include <geometry_msgs/msg/point.hpp> // 2. 创建 Marker 消息 visualization_msgs::msg::Marker marker; marker.header.frame_id = "map"; // 坐标系名称,需与 RViz 保持一致 marker.header.stamp = node->now(); // 时间戳 marker.ns = "example_points"; // 命名空间,可用于分组 marker.id = 0; // Marker 的唯一ID,同一ns下不能重复 marker.type = visualization_msgs::msg::Marker::POINTS; // Marker 类型:点云 marker.action = visualization_msgs::msg::Marker::ADD; // 动作:添加 // 3. 设置点的大小(宽和高,单位:米) marker.scale.x = 0.2; // 点的宽度 marker.scale.y = 0.2; // 点的高度 marker.scale.z = 0.2; // 点的深度 // 对 POINTS 类型,marker.scale.z 无效 // 4. 设置点的颜色(RGBA,范围0~1) marker.color.r = 1.0f; // 红色分量 marker.color.g = 0.0f; // 绿色分量 marker.color.b = 0.0f; // 蓝色分量 marker.color.a = 1.0f; // 透明度(1为不透明) // 5. 添加点数据 geometry_msgs::msg::Point p1, p2; p1.x = 1.0; p1.y = 2.0; p1.z = 0.0; p2.x = 2.0; p2.y = 3.0; p2.z = 0.0; marker.points.push_back(p1); marker.points.push_back(p2); // 6. 发布 Marker visualization_msgs::msg::MarkerArray marker_array; marker_array.markers.push_back(marker); marker_pub->publish(marker_array); 详细注释说明 header.frame_id:指定 Marker 所在的坐标系,RViz 必须有该坐标系。 header.stamp:时间戳,建议用 node->now()。 ns 和 id:用于唯一标识一个 Marker,更新/删除时需一致。 type:Marker 的类型,决定显示方式。 scale.x/y:点的宽高,必须都大于 0。 color:点的颜色和透明度。 points:点的坐标列表。 action:常用为 ADD,也可用 DELETE 删除。 4. 面色 有时需要将地图某一部分区域绘制出来,此时可以采用三角形“扇形剖分”的方式填充出来,将Marker类型设置为TRIANGLE_LIST,然后设置颜色进行显示。

Hero Image
开机自启动

设置程序开机自启动 开机自启动项的实现在ubuntu以及linux操作系统中一般采用systemd;在docker中一般采用supervisor来实现。 systemd systemd是Ubuntu系统中非常重要的一个组件,可以提高系统的稳定性、安全性和可维护性。具体的来看systemd是一种用于管理Linux操作系统的系统和服务的守护进程,具有非常重要的作用: 启动和停止服务:systemd可用于管理系统中运行的所有服务,包括网络、文件系统、进程和应用程序。 管理系统进程:systemd可以在系统启动时自动启动特定的进程,也可以监控进程的运行状态并在必要时重新启动它们。 控制系统挂起和恢复:systemd可以监控系统的状态并在需要时进行挂起、休眠或恢复操作。 日志记录和故障排除:systemd提供了一个统一的日志系统,可以轻松地查看和分析系统日志,有助于诊断和解决故障。 定时任务管理:systemd的timer单元可以执行定时任务,比如定期备份系统数据等。 设置Python/Cpp程序在系统开机后自动启动 要在Ubuntu系统下将Python程序设置为开机自启动并在后台运行,可以按照以下步骤操作: 创建一个shell脚本文件 在Ubuntu系统中,可以使用sudo nano命令创建一个shell脚本文件,例如: sudo nano /usr/local/bin/myprogram.sh 在打开的文本编辑器中,输入以下内容: 一个使用服务开机后自动启动python程序的例子 #!/bin/bash /usr/bin/python3 /path/to/myprogram.py & # /usr/bin/python3 : 表示Python解释器的路径, # /path/to/myprogram.py : 表示Python程序的路径。 # & : 在脚本末尾添加一个&符号可以让程序在后台运行 给shell脚本文件添加执行权限 # 给刚刚创建的shell脚本文件添加执行权限: sudo chmod +x /usr/local/bin/myprogram.sh 创建一个systemd服务文件 执行以下命令,将创建一个systemd服务文件,该文件用来描述服务以告诉systemd如何来启动和停止它。 sudo nano /etc/systemd/system/myprogram.service 在打开的文本编辑器中,输入以下内容: [Unit] Description=My Python Program After=multi-user.target [Service] Type=idle ExecStart=/bin/bash /usr/local/bin/myprogram.sh [Install] WantedBy=multi-user.target 主要参数解释: [Unit] : 配置服务中的一个节,主要用来定义服务单元。该节下有以下几个属性可以设置:Description:指定服务的描述信息。 Documentation:指定服务的文档地址。Requires:指定服务的依赖关系,表示该服务依赖于指定的服务。Wants:指定服务的依赖关系,表示该服务希望指定的服务运行,但不是必须的。After:指定服务的启动顺序,表示该服务应该在指定的服务之后启动。Before:指定服务的启动顺序,表示该服务应该在指定的服务之前启动。Conflicts:指定服务的冲突关系,表示该服务与指定的服务不能同时运行。 [Service] : 配置服务中的一个节,主要用来定义服务属性。该节下有以下几个属性可以设置:Type:指定服务的进程类型,可选值包括simple、forking、oneshot、dbus和notify等。User:指定服务运行的用户。Group:指定服务运行的用户组ExecStart:指定服务启动时要执行的命令或脚本。ExecStop:指定服务停止时要执行的命令或脚本。WorkingDirectory:指定服务的工作目录。PIDFile:指定服务进程的PID文件路径。Restart:指定服务重启的行为,设定为no: 服务退出后不会自动重新启动。always: 无论退出原因如何,服务都将自动重新启动。on-success: 仅在服务以退出状态0(成功)退出时才自动重新启动。 on-failure: 仅在服务以退出状态非0(失败)退出时才自动重新启动。on-abnormal: 仅在服务以异常退出状态(如由信号导致的退出)退出时才自动重新启动。on-abort: 仅在服务以中止退出状态(如由程序自己退出)退出时才自动重新启动。on-watchdog: 仅在服务超时退出时才自动重新启动。需要使用WatchdogSec选项来启用看门狗定时器。可以使用逗号分隔符将多个选项组合在一起。例如,Restart=on-failure,always表示在服务以失败退出时重新启动服务,同时也会在服务因其他原因退出时自动重新启动。。TimeoutStartSec:指定服务启动超时时间。TimeoutStopSec:指定服务停止超时时间。ExecStartPre:设定延迟启动。

Hero Image
树莓派Arm配置 apt 源

树莓派Arm配置 apt 源 1. Backup sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak 2. Update sudo apt-get update 3. Replace 参考链接 ubuntu 22.04 - arm architecture deb https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy-updates main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy-backports main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy-security main restricted universe multiverse # deb https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ jammy-proposed main restricted universe multiverse ubuntu 20.04 - arm architecture deb https://mirror.sjtu.edu.cn/ubuntu-ports/ focal main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ focal main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ focal-updates main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ focal-backports main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ focal-security main restricted universe multiverse # deb https://mirror.sjtu.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ focal-proposed main restricted universe multiverse ubuntu 18.04 - arm architecture deb https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic-updates main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic-backports main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic-security main restricted universe multiverse # deb https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu-ports/ bionic-proposed main restricted universe multiverse ubuntu 22.04 - x86_64 architecture deb https://mirror.sjtu.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb https://mirror.sjtu.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse ubuntu 20.04 - x86_64 architecture deb https://mirror.sjtu.edu.cn/ubuntu/ focal main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ focal-updates main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ focal-backports main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ focal-security main restricted universe multiverse # deb https://mirror.sjtu.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse ubuntu 18.04 - x86_64 architecture deb https://mirror.sjtu.edu.cn/ubuntu/ bionic main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ bionic main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse deb https://mirror.sjtu.edu.cn/ubuntu/ bionic-security main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ bionic-security main restricted universe multiverse # deb https://mirror.sjtu.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse # deb-src https://mirror.sjtu.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse 4. Update sudo apt-get update