パブリッシュされるデータはカスタム メッセージで定義されているのと同じタイプである必要があることに注意してください。そうでない場合は、上記のエラーが報告されます。
エラー ログによると、force_scalar メッセージをパブリッシュするときに、データ フィールドは List 型のデータ [5.017082] で渡され、force_scalar メッセージのデータ フィールドには float 型が必要でした。その結果、メッセージをシリアル化するときに List 型を float 型に変換できなくなり、「必須の引数は float ではありません」というエラーが報告されます。この問題を解決するには、force_scalar メッセージ定義を確認する必要があり、そのデータ フィールドは float 型データのみを受け入れます。その後、force_scalar メッセージをパブリッシュするときに、データを最初に float 型に変換する必要があり、List 型を直接パブリッシュすることはできません。例えば:
python
data = [5.017082]
# 错误的发布,data为List
msg.data = data
force_pub.publish(msg)
# 正确的发布,先转换data为float
msg.data = float(data[0])
force_pub.publish(msg)
概要手順: 1. Force_scalar メッセージ定義をチェックし、データ フィールドのタイプが float2 であることを確認します。メッセージを印刷および公開するときのデータ フィールドのタイプは、List などの他のタイプであってはなりません。 3. 他のタイプの場合は、 4. メッセージを発行する メッセージを発行する前にデータフィールドが float 型であることを確認することで、float 型データをシリアル化する際のエラーの問題を解決できます。