1=1 ,1<>1, 1=0

本文介绍了在动态生成SQL语句时如何使用'where 1=1'作为基础条件来灵活添加额外筛选条件的方法,并探讨了'where 1<>1'及'where 1=0'在特定场景下的应用。

a、where 1=1的解释
注入常用
因为某些时候根据输入内容决定检索条件,这样可能是0个或者多个,加上1=1后每个条件前加个and连上就可以了。
主要是动态生成sql语句的时候要用  主要是可以加上and 你的条件
where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。
例如:String where= " 1=1 ";
  if(albumtype!=null){
   String typeName=albumtype.getTypeName();
   if(typeName!=null){
    where +=" and albumtype.typeName like '%" + typeName + "%' ";
   }
  }
  final String hsql = " from Albumtype albumtype where " + where;
b、where 1<>1的解释
  1、说明:复制表(只复制结构,源表名:a 新表名:b) (Access可用)
  法一:select * into b from a where 1<>1
  法二:select top 0 * into b from a
c、where 1=0的解释
此语句的作用是: 打开此记录集,但并不从记录集中读取任何记录.直观点说就是,为保护记录集数据,仅做打开,是只做插入记录时用到
表示条件永远不成立
适用于导出表结构
比如说你想看下一个表的结构 你可以
select * from 表名 where 1=0

<robot name="car"> <link name="base_footprint"> <visual> <geometry> <sphere radius="0.001"/> </geometry> </visual> </link> <link name="base_link"> <visual> <geometry> <cylinder radius="0.1" length="0.08"/> </geometry> <origin xyz="0 0 0" rpy="0 0 0"/> <material name="base"> <color rgba="1 0 0 1"/> </material> </visual> </link> <joint name="ltf" type="fixed"> <parent link="base_footprint"/> <child link="base_link"/> <origin xyz="0 0 0.055" rpy="0 0 0"/> </joint> <link name="left"> <visual> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> <origin xyz="0 0 0" rpy="1.5708 0 0"/> <material name="left"> <color rgba="0 0 0 1"/> </material> </visual> </link> <link name="right"> <visual> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> <origin xyz="0 0 0" rpy="1.5708 0 0"/> <material name="right"> <color rgba="0 0 0 1"/> </material> </visual> </link> <!-- 左轮关节:修改为标准命名 --> <joint name="base_l_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="left"/> <origin xyz="0 0.1 -0.0225" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <!-- 右轮关节:修改为标准命名 --> <joint name="base_r_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="right"/> <origin xyz="0 -0.1 -0.0225" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <link name="qwx"> <visual> <geometry> <sphere radius="0.0075"/> </geometry> <material name="right"> <color rgba="0 0 0 1"/> </material> </visual> </link> <link name="hwx"> <visual> <geometry> <sphere radius="0.0075"/> </geometry> <material name="right"> <color rgba="0 0 0 1"/> </material> </visual> </link> <joint name="qtb" type="continuous"> <parent link="base_link"/> <child link="qwx"/> <origin xyz="0.08 0 -0.0425" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <joint name="htb" type="continuous"> <parent link="base_link"/> <child link="hwx"/> <origin xyz="-0.08 0 -0.0425" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <link name="laserzj"> <visual> <geometry> <cylinder radius="0.01" length="0.05"/> </geometry> <material name="laserzj"> <color rgba="0 1 0 1"/> </material> </visual> </link> <link name="laser"> <visual> <geometry> <cylinder radius="0.02" length="0.02"/> </geometry> <material name="laser"> <color rgba="1 0 0 1"/> </material> </visual> </link> <joint name="zjtb" type="fixed"> <parent link="base_link"/> <child link="laserzj"/> <origin xyz="0 0 0.06" rpy="0 0 0"/> </joint> <joint name="lasertb" type="fixed"> <parent link="laserzj"/> <child link="laser"/> <origin xyz="0 0 0.03" rpy="0 0 0"/> </joint> </robot> 将上述代码改为gazebo格式,并且有合理不出错的质量参数,以及不同的容易区分不同关节的颜色
09-18
以下是将你提供的 **标准 URDF 文件** 转换为 **适用于 Gazebo 的格式**,并添加了: - 合理的 `<inertial>` 质量和惯性参数(基于物理公式计算) - 不同部件使用不同颜色,便于在 Gazebo 或 RViz 中区分 - 添加 Gazebo 插件支持(如 `gazebo_ros_control` 和激光雷达插件) --- ## ✅ 转换后的 Gazebo 可运行 URDF 文件(`car_gazebo.urdf`) ```xml <?xml version="1.0"?> <robot name="car"> <!-- Base Links --> <link name="base_footprint"> <visual> <geometry> <sphere radius="0.001"/> </geometry> </visual> </link> <link name="base_link"> <inertial> <mass value="1.2"/> <!-- 圆柱体:半径 0.1m,长度 0.08m --> <!-- Ixx = Iyy = m*(3r² + h²)/12, Izz = m*r²/2 --> <inertia ixx="0.0033" ixy="0.0" ixz="0.0" iyy="0.0033" iyz="0.0" izz="0.006"/> </inertial> <visual> <geometry> <cylinder radius="0.1" length="0.08"/> </geometry> <origin xyz="0 0 0" rpy="0 0 0"/> <material name="base"> <color rgba="1.0 0.0 0.0 1.0"/> <!-- 红色 --> </material> </visual> <collision> <geometry> <cylinder radius="0.1" length="0.08"/> </geometry> </collision> </link> <joint name="ltf" type="fixed"> <parent link="base_footprint"/> <child link="base_link"/> <origin xyz="0 0 0.055" rpy="0 0 0"/> </joint> <!-- Left Wheel --> <link name="left"> <inertial> <mass value="0.15"/> <!-- 实心圆柱轮:r=0.0325, l=0.015 --> <inertia ixx="1.7e-5" ixy="0.0" ixz="0.0" iyy="6.4e-5" iyz="0.0" izz="1.7e-5"/> </inertial> <visual> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> <origin xyz="0 0 0" rpy="1.5708 0 0"/> <material name="left"> <color rgba="0.0 0.0 1.0 1.0"/> <!-- 蓝色 --> </material> </visual> <collision> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> </collision> </link> <!-- Right Wheel --> <link name="right"> <inertial> <mass value="0.15"/> <inertia ixx="1.7e-5" ixy="0.0" ixz="0.0" iyy="6.4e-5" iyz="0.0" izz="1.7e-5"/> </inertial> <visual> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> <origin xyz="0 0 0" rpy="1.5708 0 0"/> <material name="right"> <color rgba="0.0 1.0 1.0 1.0"/> <!-- 青色 --> </material> </visual> <collision> <geometry> <cylinder radius="0.0325" length="0.015"/> </geometry> </collision> </link> <!-- Left Wheel Joint --> <joint name="base_l_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="left"/> <origin xyz="0 0.1 -0.0225" rpy="0 0 0"/> <axis xyz="0 1 0"/> <dynamics damping="0.1" friction="1.0"/> </joint> <!-- Right Wheel Joint --> <joint name="base_r_wheel_joint" type="continuous"> <parent link="base_link"/> <child link="right"/> <origin xyz="0 -0.1 -0.0225" rpy="0 0 0"/> <axis xyz="0 1 0"/> <dynamics damping="0.1" friction="1.0"/> </joint> <!-- Caster Wheels --> <link name="qwx"> <inertial> <mass value="0.03"/> <!-- 小球:r=0.0075 --> <inertia ixx="6.75e-7" ixy="0.0" ixz="0.0" iyy="6.75e-7" iyz="0.0" izz="6.75e-7"/> </inertial> <visual> <geometry> <sphere radius="0.0075"/> </geometry> <material name="caster"> <color rgba="1.0 1.0 0.0 1.0"/> <!-- 黄色 --> </material> </visual> <collision> <geometry> <sphere radius="0.0075"/> </geometry> </collision> </link> <link name="hwx"> <inertial> <mass value="0.03"/> <inertia ixx="6.75e-7" ixy="0.0" ixz="0.0" iyy="6.75e-7" iyz="0.0" izz="6.75e-7"/> </inertial> <visual> <geometry> <sphere radius="0.0075"/> </geometry> <material name="caster"> <color rgba="1.0 0.5 0.0 1.0"/> <!-- 橙色 --> </material> </visual> <collision> <geometry> <sphere radius="0.0075"/> </geometry> </collision> </link> <joint name="qtb" type="continuous"> <parent link="base_link"/> <child link="qwx"/> <origin xyz="0.08 0 -0.0425" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <joint name="htb" type="continuous"> <parent link="base_link"/> <child link="hwx"/> <origin xyz="-0.08 0 -0.0425" rpy="0 0 0"/> <axis xyz="0 1 0"/> </joint> <!-- Laser Sensor --> <link name="laserzj"> <inertial> <mass value="0.05"/> <inertia ixx="1e-6" ixy="0.0" ixz="0.0" iyy="1e-6" iyz="0.0" izz="1e-6"/> </inertial> <visual> <geometry> <cylinder radius="0.01" length="0.05"/> </geometry> <material name="laserzj"> <color rgba="0.0 1.0 0.0 1.0"/> <!-- 绿色 --> </material> </visual> <collision> <geometry> <cylinder radius="0.01" length="0.05"/> </geometry> </collision> </link> <link name="laser"> <inertial> <mass value="0.1"/> <inertia ixx="3.4e-5" ixy="0.0" ixz="0.0" iyy="3.4e-5" iyz="0.0" izz="2.0e-5"/> </inertial> <visual> <geometry> <cylinder radius="0.02" length="0.02"/> </geometry> <material name="laser"> <color rgba="1.0 0.0 1.0 1.0"/> <!-- 品红 --> </material> </visual> <collision> <geometry> <cylinder radius="0.02" length="0.02"/> </geometry> </collision> </link> <joint name="zjtb" type="fixed"> <parent link="base_link"/> <child link="laserzj"/> <origin xyz="0 0 0.06" rpy="0 0 0"/> </joint> <joint name="lasertb" type="fixed"> <parent link="laserzj"/> <child link="laser"/> <origin xyz="0 0 0.03" rpy="0 0 0"/> </joint> <!-- Gazebo Plugins --> <gazebo> <plugin name="gazebo_ros_control" filename="libgazebo_ros_control.so"> <robotNamespace>/</robotNamespace> </plugin> </gazebo> <!-- Laser Sensor Plugin --> <gazebo reference="laser"> <sensor type="ray" name="laser"> <pose>0 0 0 0 0 0</pose> <visualize>true</visualize> <update_rate>40</update_rate> <ray> <scan> <horizontal> <samples>360</samples> <resolution>1</resolution> <min_angle>-1.5708</min_angle> <max_angle>1.5708</max_angle> </horizontal> </scan> <range> <min>0.1</min> <max>3.0</max> <resolution>0.01</resolution> </range> <noise> <type>gaussian</type> <mean>0.0</mean> <stddev>0.01</stddev> </noise> </ray> <plugin name="gazebo_ros_ray_sensor" filename="libgazebo_ros_ray_sensor.so"> <topicName>/scan</topicName> <frameId>laser</frameId> </plugin> </sensor> </gazebo> <!-- 物理属性 --> <gazebo reference="base_link"> <mu1>0.8</mu1> <mu2>0.8</mu2> <kp>1e6</kp> <kd>1.0</kd> </gazebo> <gazebo reference="left"> <mu1>1.0</mu1> <mu2>1.0</mu2> <kp>1e6</kp> <kd>1.0</kd> </gazebo> <gazebo reference="right"> <mu1>1.0</mu1> <mu2>1.0</mu2> <kp>1e6</kp> <kd>1.0</kd> </gazebo> </robot> ``` --- ## ✅ 使用说明 ### 1. 保存为文件 将上述内容保存为: ``` urdf/car_gazebo.urdf ``` ### 2. 创建 launch 文件加载模型 ```xml <!-- display.launch --> <launch> <param name="robot_description" textfile="$(find your_package)/urdf/car_gazebo.urdf"/> <node name="spawn_urdf" pkg="gazebo_ros" type="spawn_model" args="-urdf -model car -param robot_description"/> </launch> ``` ### 3. 运行启动文件 ```bash roslaunch your_package display.launch ``` --- ## ✅ 模型颜色对照表 | Link | 颜色 | 描述 | |--------------|--------------|--------------| | base_link | 🔴 红色 | 主体 | | left | 🔵 蓝色 | 左轮 | | right | 🟦 青色 | 右轮 | | qwx | 🟡 黄色 | 前万向轮 | | hwx | 🟧 橙色 | 后万向轮 | | laserzj | 🟢 绿色 | 激光雷达支架 | | laser | 🟪 品红 | 激光雷达本体 | --- ## ✅ 惯性参数说明 - 所有惯性参数均基于物理公式计算(如圆柱、球体等) - 质量单位为 kg,长度单位为 m - 惯性张量单位为 kg·m² --- ## ✅ 相关问题 ##
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值